[英]Android: How to set listeners for dynamically created items in a list view
我有一個基於名稱列表填充其項目的列表視圖。 我已經將適配器添加到列表視圖並設置了項目。 這是代碼:
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));
}
};
但是,當我單擊列表項時,沒有任何反應,似乎聽眾無法正常工作。 知道我的問題是什么嗎?
很簡單,只需在設置適配器之前初始化偵聽器即可。
我希望這能解決您的問題。
編輯:
在您的ListView
設置這些屬性
android:focusable="false"
android:focusableInTouchMode="false"
android:descendantFocusability="blocksDescendants"
同時使您的ImageView(s)
可點擊:
yourImageViewObject.setClickable(true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.