我的 db 2 表中有一个多对多关系。
TAB_ARTICLES:{_ID、标题、正文、日期}
TAB_TAG:{_ID、名称、颜色、日期}
TAB_ART_TAG:{_ID、ARTICLE_ID、TAG_ID}
我需要填充一个 ListView,一行用于文章,在每一行中,我需要为链接到该文章的每个标签都有一个 TextView。喜欢下面的image
我认为有 2 个解决方案。
一个。我使用一个 CursorAdapter 和一个只在 TAB_ARTICLE 上创建的游标,并且在每一行中我都执行查询以加入其他 2 个表以查找与本文相关的所有标签。此解决方案需要大量的数据库访问。
我实现了一个临时表
TABLE_TEMP:{ARTICLE_TITLE、ARTICLE_BODY、ARTICLE_DATE、TAG1_NAME、TAG1_COLOR、TAG2_NAME、TAG2_COLOR...}
我使用此表上的查询作为自定义适配器的游标。由于表格列,此解决方案使用更多空间并且对可能显示的标签有限制。
还有其他方法吗?
最佳答案
嗯,实际上,这是一个多标准的东西:时间、空间、更新、搜索等。所以没有单一的方法。然而,多个查询很可能会导致滚动陷入困境。更糟糕的是,仅在某些设备上。临时表可能有效也可能无效,具体取决于数据的总体大小。您可能希望让这个冗余表与主表保持同步,同时对两者进行更新。
最简单的权衡之一可能是将带有标签数据(XML、JSON、其他标记/分离格式)的冗余 TEXT/CLOB 列添加到 TAB_ARTICLES 并使其与您的详细数据保持同步。顺便说一下,只有当您的查询证实了这一点时,您才真正需要 M:M 模式。否则,单表就足够了。
同样,我会首先列出并评估所有标准,然后确定真正需要扩展的维度并简化其余维度。
关于来自多对多数据库关系的 Android ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13083807/