ListView标题占据一个位置有充分的理由吗?

时间:2010-10-26 21:01:04

标签: android listview header cursor

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

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

的内容

2 个答案:

答案 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对列表的影响 - 它们仍然只是普通元素。