在Android 2.2上发生以下情况:
我有一个ListActivity,可以选择单个项目。我注册1)一个onClickItemListener和 2)onItemLongClick监听器
用于ListActivity的ListView。在itemClick上我只是将列表项设置为选中。在itemLongClick上,我想做同样的事情和其他步骤。我的问题是,从onItemLongClickListener调用view.setSelected(true)不起作用 - ListView中的项目未被选中。即使从这两个不同的侦听器调用完全相同的方法,也会发生这种情况!请参阅以下代码:
/*
* Set the onClickListeners for the ListView items.
*/
this.listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
itemClick(view, position);
}
});
this.listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
itemClick(view, position);
return true;
}
});
/*
* Basic procedure when the user clicks
* an item in the list.
*/
private void itemClick(View view, int position) {
view.setSelected(true);
selectedPosition = position;
selectedView = view;
}
这里的onItemLongClickListeners返回true以防止点击冒泡到onClickListener。任何帮助将不胜感激!
编辑:
结果
view.setSelected(true);
从来没有像我想象的那样锻炼。 ListActivity的标准功能是在上面的代码中一直为我选择项目,并且调用view.setSelected()从未实际选择ListView中的项目。更换方法如下解决了我的问题:
/*
* Basic procedure when the user clicks
* an item in the list.
*/
private void itemClick(View view, int position) {
getListView().setItemChecked(position, true);
selectedPosition = position;
selectedView = view;
}
感谢Jimbo提供有用的澄清问题!