有一个ListView头占据一个位置的好理由吗?

我刚刚添加了一个头到我的ListView,我不得不改变一堆代码,因为头基本上变成位置0(意思是我的CursorAdapter的光标索引不符合列表的指示,他们是1现在)。 为什么? 这对我来说似乎有点愚蠢。

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

Solutions Collecting From Web of "有一个ListView头占据一个位置的好理由吗?"

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

实际上,你应该总是使用getItemAtPosition ,因为这种方式不pipe你的ListView是否有页眉和页脚,如果你添加了新的标题,你将不需要改变你的代码。

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

我相信一个ListView只不过是一个View元素的列表。 如果你为你的ListView添加一个头文件(或者一个页脚),那么这个元素与通过ListAdapter自动添加的其他元素基本上是没有区别的。 唯一的区别是,header(和footer)元素将被固定,并不受列表ListAdapter对列表的影响 – 它们仍然只是普通的元素。