android ListView中给Item的每个控件设置单击事件
最近做了一个android项目,在每一个ListView的Item中还有两个RelativeLayout控件,需要对这两个RelativeLayout控件设置单击事件,解决如下:
只贴关键代码了
//ListView变量
private ListView lv_pcorder = null;
//需要传递的变量
List list1 = new ArrayList();
List list2 = new ArrayList();
Map pics = Util.getAnecdoteSeven();
Map picid = new HashMap();
//配置BasicAdapter
lv_pcorder = (ListView) findViewById(R.id.lv_pcorder);
lv_pcorder.setAdapter(new PicCenterListApdapter(PicCenterList.this, list1, list2, pics, picid));
//BaseAdapter实现类
public class PicCenterListApdapter extends BaseAdapter {
private Context context;
private List list1;
private List list2;
private Map map;
private Map picid;
public PicCenterListApdapter(Context context, List list1, List list2, Map map, Map picid) {
this.context = context;
this.list1 = list1;
this.list2 = list2;
this.map = map;
this.picid = picid;
}
@Override
public int getCount() {
return list1.size();
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if (convertView == null) {
vh = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.pcorderlist, null);
vh.lin0 = (RelativeLayout) convertView.findViewById(R.id.lin0);
vh.lin0.setOnClickListener(new PCount(position)); //设置单击事件
vh.lin2 = (RelativeLayout) convertView.findViewById(R.id.lin2); //设置单击事件
vh.lin2.setOnClickListener(new COrder(position)); //设置单击事件
vh.lin3 = (RelativeLayout) convertView.findViewById(R.id.lin3);
vh.lin3.setOnClickListener(new COrder(position));
vh.timeitem = (TextView) convertView.findViewById(R.id.timeitem);
vh.timeitem.setText(list1.get(position));
vh.countitem = (TextView) convertView.findViewById(R.id.countitem);
vh.countitem.setText(list2.get(position));
if (map.containsKey(list1.get(position))) {
vh.smallpic = (ImageView) convertView.findViewById(R.id.smallpic);
vh.smallpic.setImageResource(picid.get(map.get(list1.get(position)).getAddress()));
vh.title = (TextView) convertView.findViewById(R.id.title);
vh.title.setText(map.get(list1.get(position)).getTitle());
vh.picintro = (TextView) convertView.findViewById(R.id.picintro);
vh.picintro.setText( +Util.getString(map.get(list1.get(position)).getContent())+....);
}
convertView.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
return convertView;
}
//单击事件实现
class COrder implements OnClickListener {
public int position;
public COrder(int p) {
position = p;
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(context, CountOrder.class);
Bundle b = new Bundle();
b.putString(datatime, list1.get(position));
intent.putExtras(b);
context.startActivity(intent);
}
}
//单击事件实现
class PCount implements OnClickListener {
public int position;
public PCount(int p) {
position = p;
}
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(context, PicCenterItem.class);
Bundle b = new Bundle();
b.putString(datatime, list1.get(position));
intent.putExtras(b);
context.startActivity(intent);
}
}
public final class ViewHolder {
public RelativeLayout lin0;
public RelativeLayout lin2;
public RelativeLayout lin3;
public TextView timeitem;
public TextView countitem;
public ImageView smallpic;
public TextView title;
public TextView picintro;
}
}
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)