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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对列表的影响 - 它们仍然只是普通元素。

以上是关于ListView标题占据一个位置有充分的理由吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL 视图的充分理由是啥?

将异步 API 转换为同步 API。 (我有充分的理由保证)

是否有任何陷阱或充分的理由不使用 autosproc 进行存储过程调用?

是否有充分的理由在 C 中始终将定义括在括号中?

是否有充分的理由为 DialogFragments 使用子片段管理器?

是否有充分的理由在打字稿项目中将编译器选项“声明”设置为 true