我希望ListView的项目对常规点击和长按做出反应。 我尝试设置两个侦听器,但它告诉我第一个侦听器无法应用于第二个侦听器。 这是我的代码的一部分:
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
TextView product = (TextView) view;
...
}
};
AdapterView.OnItemLongClickListener itemLongClickListener = new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView product = (TextView) view;
product.setBackgroundColor(Color.GREEN);
return true;
}
};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
arrayOfNames);
ListView itemsView = (ListView)findViewById(R.id.items);
itemsView.setOnItemClickListener(itemClickListener);
itemsView.setOnItemClickListener(itemLongClickListener);
答案 0 :(得分:1)
您必须在ListView中设置setOnItemLongClickListener():
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
// TODO Auto-generated method stub
Log.v("long clicked","pos: " + pos);
return true;
}
});
列表中每个项目的XML(您应该使用自定义XML)也必须具有android:longClickable="true"
(或者您可以使用便捷方法lv.setLongClickable(true);).
),这样您可以仅包含一个列表一些项目响应longclick。