我需要显示数据库查询中的项目列表。有些物品需要展示两次;一旦位于列表顶部,如果设置了特定标志(主要排序标准),并根据次要/默认排序标准再次在列表中的自然位置。
我的数据库查询正确地为相关项返回多行。行只有特殊标志不同,结果与我期望的完全一致。
我的问题:从CursorAdapter或ListView的角度来看,多个行具有相同的_id
是否安全?或者某个地方是否要求_id
字段在给定结果集中是唯一的?
似乎工作得很好,但我不知道我是否幸运。
答案 0 :(得分:1)
简短的回答...... sorta。
稍长但仍然快速回答......只要你没有使用ListViews
选择模式......你就没事了。
CursorAdapters
根据" _id"来获取给定项目的ID柱。 AFAIK,这几乎只在确定检查或激活哪个项目时使用。启用其中一种选择模式时,整个检查或激活状态仅成为相关问题。实际上,没有为getItemId()
返回任何适配器的唯一ID将导致以下相同的问题。
假设您已将选择模式设置为CHOICE_MODE_MULTIPLE_MODAL。如果用户激活两个dpe row id项;然后旋转设备,他们会发现只有1个项目已经恢复到激活状态而不是两者。
旁注,这可能也可能不会影响所选状态。快速浏览源代码看起来就像是通过id和位置跟踪所选项目...它似乎只使用位置编号来确定要显示所选的视图。我可能错了。