在ListView中显示项目标签

时间:2012-02-14 10:37:57

标签: android sqlite android-listview android-cursor

我有点陷入一开始似乎很容易的问题。我想在ListView中显示支持多个标签的项目。我已经设置了一个CursorAdapter来为我的ListView提供必要的数据,但我不太清楚最好的方法是让它工作。

通过使用JOIN,我从数据库中提取了项目和标签。

item1 | tagA
item1 | tagB
item2 | tagC
item3 | tagB

我尝试了很多垃圾,但直到现在都是这样......垃圾。

尽管前两个项共享完全相同的_id字段,但项目被分配给单独的ListViews,我想这与适配器为Cursor中的每个条目生成一个新列表项的事实有关。在某个地方,我希望它会尝试使用相同的_id来更新列表条目,这将为我提供一个简单的解决方案,即只需在ViewBinder中编写代码以随时setViewValue()附加到标记View被称为。

  1. 我考虑过在ViewBinder中手动执行Cursor.moveToNext(),如果后续游标的id匹配,则将必要的标签TextViews添加到我的ListView中。这不能完全解决我的问题,因为实际ListView的游标不会受到ViewBinder中moveToNext()调用的影响(由于参数的整个值传递)。 List中的第一项显示所有标记item1 | tagA, tagB,但下一个Cursor仍显示item1中已显示的item1 | tagB,因为适配器的Cursor不能被ViewBinder调用。
  2. 我考虑过编写/扩展对象并让我的适配器连接点(.eg:我传递适配器List<Item>(而不是Cursor)和arm Item方法{{1} }轻松提取每个项目的标签。     列表{       Item {id = 1,tags = {tagA,tagB}},       商品{id = 2,tags = {tagC}},       商品{id = 3,tags = {tagB}}     } 我将迭代Cursor集来填充List。但是,要做到这一点,我真的需要知道理解Cursor的内务管理以保持清洁。
  3. 基本上,我不想提出一个肮脏的解决方案。我打赌你们中的一些人过去曾在某个地方处理过这个问题。解决这个问题的最佳方法是什么?

0 个答案:

没有答案