我有一个ListView,现在遇到了问题:当我点击其中的一个项目时,我希望它被选中。
我的代码如下:
protected void onResume() {
...
ListView lv = getListView();
lv.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
Log.v(TAG, "onItemSelected(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
public void onNothingSelected(AdapterView<?> adapterView) {
Log.v(TAG, "onNothingSelected(...) => selected: " + getSelectedItemPosition());
}
});
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) {
lv.setSelection(pos);
Log.v(TAG, "onItemClick(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
});
...
}
当我运行这个程序并点击第二个项目(即pos=1)时,我会得到以下结果:
04-03 23:08:36.994: V/DisplayLists(663): onItemClick(..., 1,...) => selected: -1
即使OnItemClickListener使用正确的参数调用并调用setSelection(1),也没有选择任何项(因此也不会调用OnItemSelectedListener.onItemSelected(...)),并且在setSelection(1)-call之后getSelectedItemPosition()仍然产生-1。
我错过了什么?
迈克尔
PS:我的列表有>=2个元素...