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

问题描述 投票:8回答:2

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

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

android listview header cursor
2个回答
22
投票

由于某种原因,position(来自onItemClick)与ListView(不是适配器)中的项目数量捆绑在一起,包括页眉和页脚。当您设置OnItemClickListener时,您应该通过调用listView.getItemAtPosition(position)而不是adapter.getItem(position)来检索单击的项目。

事实上,你应该总是使用getItemAtPosition,因为如果你的ListView有页眉和页脚,这种方式无关紧要,如果你添加新的标题,你将不需要更改你的代码。

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.