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

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

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

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

实际上,您应该始终使用getItemAtPosition ,因为如果ListView具有页眉和页脚,那么这种方式无关紧要,如果添加新标题,则无需更改代码。

如果您不希望标题可选,则应以这种方式添加它: listView.addHeaderView(headerView, null, false)

我相信ListView只不过是一个View元素列表。 如果你向ListView添加一个标题(或者一个页脚,它应该没有任何区别),那个元素与通过ListAdapter自动添加的任何其他元素基本没有区别。 唯一的细微差别是标题(和页脚)元素将被修复并且不受ListAdapter对列表的影响 – 它们仍然只是普通元素。