在由CursorAdapter支持的ListView中出现两次相同的项目是否安全?

时间:2014-11-27 16:49:01

标签: android android-listview android-sqlite android-cursoradapter

我需要显示数据库查询中的项目列表。有些物品需要展示两次;一旦位于列表顶部,如果设置了特定标志(主要排序标准),并根据次要/默认排序标准再次在列表中的自然位置。

我的数据库查询正确地为相关项返回多行。行只有特殊标志不同,结果与我期望的完全一致。

我的问题:从CursorAdapter或ListView的角度来看,多个行具有相同的_id是否安全?或者某个地方是否要求_id字段在给定结果集中是唯一的?

似乎工作得很好,但我不知道我是否幸运。

1 个答案:

答案 0 :(得分:1)

简短的回答...... sorta。

稍长但仍然快速回答......只要你没有使用ListViews选择模式......你就没事了。

CursorAdapters根据" _id"来获取给定项目的ID柱。 AFAIK,这几乎只在确定检查或激活哪个项目时使用。启用其中一种选择模式时,整个检查或激活状态仅成为相关问题。实际上,没有为getItemId()返回任何适配器的唯一ID将导致以下相同的问题。

假设您已将选择模式设置为CHOICE_MODE_MULTIPLE_MODAL。如果用户激活两个dpe row id项;然后旋转设备,他们会发现只有1个项目已经恢复到激活状态而不是两者。

旁注,这可能也可能不会影响所选状态。快速浏览源代码看起来就像是通过id和位置跟踪所选项目...它似乎只使用位置编号来确定要显示所选的视图。我可能错了。