ListView.getSelectedItemPosition()意外返回0

时间:2012-02-10 05:14:44

标签: android listview

我的ActivityListView,其中包含CheckedTextView。单击某个项目后,我会使用setItemChecked(position, true)使该项目突出显示。

但是,当活动刚刚启动时,当我触摸某个项目时,位置0中的项目也会突出显示。我使用getSelectedItemPosition()来检查,即使它处于触摸模式(isinTouchMode = true),它返回0但不是-1。

滚动listView后,它正常工作,getSelectedItemPosition()按预期返回-1。

为什么会这样?我只是希望活动在触摸模式下处理而不是按键输入。

如果无法避免。我可以纠正吗?我使用ListView.setSelection(-1)但它没有效果。

编辑:我通过删除一些冗余代码以某种方式解决问题。我希望listView中指定位置的项目显示在listView的顶部,并在活动开始时突出显示,所以我使用下面的代码:

ListView.setItemChecked(position, true);
ListView.setSelectionFromTop(position, 0);

多余的是(我使用相同的代码两次):

ListViewAdapter.notifyDataSetInvalidated();
ListView.setItemChecked(position, true);
ListView.setSelectionFromTop(position, 0);

虽然我解决了这个问题,但我仍然想知道背后发生了什么。当我“触摸”listView两次时,为什么选择位置0?

1 个答案:

答案 0 :(得分:0)

您是否为选中的行设置了标记? 你必须在getView()中为视图设置标记。

之后只有你可以考虑视图的位置。 尝试使用它。(例如:yourInflatedView.setTag(position);)