我对AdapterView.OnItemClickListener中的一些行为有疑问,让我有点不知所措。
我有一个由自定义CursorAdapter支持的ListView。 Cursor由LoaderManager管理。 ListView还有一个OnItemClickListener。正确加载数据并正确填充ListView - 在这种情况下包含许多项目。
我发现 onItemClick 的位置参数相对于屏幕上显示的项目而不是整个列表是0。因此,例如,如果我向下滚动并选择第一个可查看项目,我将实际获得列表中的第一个项目(不可见),而不是我选择的项目。当我使用调试器时,我发现 position 实际上的值为0,即使选中的项目在列表中更进一步。
奇怪的是,在我开始使用LoaderManager之前,这个工作正常。
我正在使用v4支持库。
如果我这样做:
public void onItemClick( AdapterView<?> parent, View listItem, int position, long id ) {
Cursor c = myListAdapter.getItem( parent.getFirstVisiblePosition() + position );
// do stuff
然后我得到了我实际选择的数据,但我不知何故觉得这是错的。我不应该使用 getFirstVisiblePosition()。
有什么想法吗?
由于
答案 0 :(得分:0)
我猜您可能正在使用convertView
方法的getView()
参数来回收视图。使用它可能会导致此处出现问题。请尝试使用替代方案并检查问题是否仍然存在