我为我的Android应用程序制作了一个自定义listView,我在为项目的不同部分创建单独的onClickListeners时遇到问题。 我的项目有图片和文字。我想要的是根据点击的那些开始不同的活动。
onClick()方法应该启动一个活动,这使我无法在我的DataBinder类的getView()方法中定义。 (DataBinder使用自定义布局填充我的listView)
任何帮助?
谢谢!
答案 0 :(得分:9)
在自定义ListAdapter's
getView
方法中,您应该将onClickListeners
添加到您希望对点击进行操作的不同子视图中。
关于如何实现getView
方法的示例:
class CustomListAdapter extends ArrayAdapter<String> implements OnClickListener {
public CustomListAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
TextView tv = (TextView) v.findViewById(R.id.textView1);
tv.setOnClickListener(this);
ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
iv.setOnClickListener(this);
return super.getView(position, convertView, parent);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.textView1:
// Do stuff accordingly...
break;
case R.id.imageView1:
// Do stuff when imageView1 is clicked...
default:
break;
}
}
}
答案 1 :(得分:1)
为列表项中的onClick()
和ImageView
定义单独的TextView
方法并非不可能。这正是您必须执行的操作,而不是使用onClick()
的{{1}}处理程序。
在适配器的ListView
中为每个项目实施onClick()
方法。
答案 2 :(得分:0)
一种选择是为单独的元素包含onClick方法。假设您已经在XML中构建了自定义行,在onClick字段中添加方法很简单,设置该元素(例如,图像)以允许点击(如果尚未),并在您的类中定义方法。然后,如果单击行,则会触发listview单击处理程序,但如果单击该元素(图像),则会触发它自己的onClick方法。