我刚刚在ListView中添加了一个标题,我必须更改一堆代码,因为标题基本上变为位置0(意味着我的CursorAdapter的Cursor索引与列表的标记不对齐。它们是现在减去1)。为什么?这对我来说似乎有点傻。
我能想到的唯一原因是开发人员可能想要访问标题。精细。提供类似getListView()。getHeader()。
的内容答案 0 :(得分:22)
出于某种原因,position
(来自onItemClick
)与ListView
(非适配器)中的项目数相关联,包括页眉和页脚。设置OnItemClickListener
后,您应该通过调用listView.getItemAtPosition(position)
而不是adapter.getItem(position)
来检索点击的项目。
事实上,您应该始终使用getItemAtPosition
,因为如果您的ListView
包含页眉和页脚,那么这一点无关紧要,如果添加新标题,则无需更改代码。
如果您不希望标题可供选择,则应以这种方式添加标题:listView.addHeaderView(headerView, null, false)
。
答案 1 :(得分:1)
我相信ListView
只不过是View
元素的列表。如果你为ListView
添加一个标题(或者一个页脚,它应该没有任何区别),那个元素与通过{{1}自动添加的任何其他元素基本没有区别。 }}。唯一的细微差别是标题(和页脚)元素将被修复并且不受ListAdapter
对列表的影响 - 它们仍然只是普通元素。