[英]Android: How to set listeners for dynamically created items in a list view
I have list view that populated its items based on a list of names. 我有一个基于名称列表填充其项目的列表视图。 I've added an adapter to the list view and set items. 我已经将适配器添加到列表视图并设置了项目。 Here's the code: 这是代码:
items = new String[]{ "Apple", "Banana" };
list = (ListView)findViewById(R.id.fruits_listView);
list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_fruits, R.id.list_fruits_textView, items) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ImageView imageView = (ImageView)v.findViewById(R.id.list_fruits_imageView);
// Change icon based on name and set click listener for it
String s = items[position];
if (s.equals("Apple"))
{
imageView.setImageResource(R.drawable.apple);
imageView.setOnClickListener(appleListener);
}
else if (s.equals("Banana"))
{
imageView.setImageResource(R.drawable.banana);
imageView.setOnClickListener(bananaListener);
}
return v;
}
});
// Setup listeners
appleListener = new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(this, Apple.class));
}
};
bananaListener = new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(this, Banana.class));
}
};
However when I click the list items nothing happens, seems listeners don't work. 但是,当我单击列表项时,没有任何反应,似乎听众无法正常工作。 Any idea what my problem is? 知道我的问题是什么吗?
It's simple, just initialize your listeners before setting the adapters. 很简单,只需在设置适配器之前初始化侦听器即可。
I hope this solves your problem. 我希望这能解决您的问题。
EDIT: 编辑:
Set these properties in your ListView
在您的ListView
设置这些属性
android:focusable="false"
android:focusableInTouchMode="false"
android:descendantFocusability="blocksDescendants"
Also make your ImageView(s)
clickable: 同时使您的ImageView(s)
可点击:
yourImageViewObject.setClickable(true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.