8

我刚刚在我的 ListView 中添加了一个标题,我必须更改一堆代码,因为标题基本上变成了位置 0(这意味着我的 CursorAdapter 的光标索引与列表的索引不对齐。它们偏离了 1现在)。为什么?这对我来说似乎有点愚蠢。

我能想到的唯一原因是开发人员可能想要访问标题。美好的。提供类似 getListView().getHeader() 的东西。

4

2 回答 2

22

由于某种原因,position(来自onItemClick)与ListView而不是适配器)中的项目数相关,包括页眉和页脚。当您设置 an 时,OnItemClickListener您应该通过调用listView.getItemAtPosition(position)而不是adapter.getItem(position).

事实上,您应该始终使用getItemAtPosition, 因为这样无论您ListView是否有页眉和页脚,并且如果您添加新的页眉,您将不需要更改您的代码。

如果你不希望你的标题是可选的,你应该以这种方式添加它listView.addHeaderView(headerView, null, false)

于 2012-07-15T13:54:18.750 回答
1

我相信 aListView只不过是一个View元素列表。如果您向您ListViewListAdapter. 唯一的小区别是页眉(和页脚)元素将被固定并且不受ListAdapter列表的影响——尽管它们仍然只是普通元素。

于 2010-10-26T21:59:42.290 回答