我已经为我的 android 应用程序制作了一个自定义 listView,但我在为项目的不同部分创建单独的 onClickListeners 时遇到问题。我的项目有图片和文字。我想要的是根据点击了哪些活动来开始不同的活动。
该 onClick() 方法应该启动一个活动,这使得无法在我的 DataBinder 类的 getView() 方法中定义。(DataBinder 使用自定义布局填充我的 listView)
有什么帮助吗?
谢谢!
我已经为我的 android 应用程序制作了一个自定义 listView,但我在为项目的不同部分创建单独的 onClickListeners 时遇到问题。我的项目有图片和文字。我想要的是根据点击了哪些活动来开始不同的活动。
该 onClick() 方法应该启动一个活动,这使得无法在我的 DataBinder 类的 getView() 方法中定义。(DataBinder 使用自定义布局填充我的 listView)
有什么帮助吗?
谢谢!
在您的自定义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;
}
}
}
在列表项中为 the和 the定义单独onClick()
的方法并非不可能。这正是您必须做的,而不是为您的.ImageView
TextView
onClick()
ListView
onClick()
在您的适配器中getView()
为每个项目实现方法。
一种选择是为单独的元素包含一个 onClick 方法。假设您已经在 XML 中构建了自定义行,很容易在 onClick 字段中添加一个方法,将该元素(例如图像)设置为允许点击(如果还没有的话)并在您的类中定义该方法. 然后,如果该行被点击,listview 点击处理程序触发,但如果元素被点击(图像),那么它自己的 onClick 方法被触发。