具有多对多关系的Android ListView

时间:2014-12-29 22:39:28

标签: android sql sqlite simplecursoradapter

第一个问题,所以如果我踩到任何脚趾,请告诉我。)

这是我的数据库的简化版本:

CREATE TABLE products (_id INTEGER PRIMARY KEY, name STRING);

CREATE TABLE product_tag (product_id INTEGER, tag STRING, PRIMARY KEY(product_id, tag));

在我的一项活动中,我想列出行中包含所有标签的所有产品(每个产品一行),例如

bananas [yellow] [fruit]
ketchup [condiment] [red] [tomato]
mustard [yellow] [condiment]

我考虑过的选项是:

  1. 使用SimpleCursorAdapter列出所有products,在每行product_tag中查询ViewBinder,并以编程方式为每个标记创建视图并将其插入行中。< / p>

  2. 查询products LEFT JOIN product_tag ON products.id = product_tag.product_id,导致每个标记一行(或每个产品一行没有标记)并手动填充列表。这看起来更复杂,更糟糕,并且复制了一些数据,但避免了查询products中每行的数据库。

  3. 如果有更多Android经验的人可以评论最有效的方法来实现这一点,我会喜欢它!提前谢谢。

1 个答案:

答案 0 :(得分:0)

绝对是#2。数据库访问速度很慢,因此您希望最大限度地减少数据库查询的数量。

相关问题