来自多对多数据库关系的 Android ListView

标签 android database listview adapter

我的 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/

相关文章:

android - 应用发明家 : Asynchonous tasks?

database - 更改日志/审计数据库表的最佳设计?

java - 将我的 HashSet 显示到 ListView

java - 当我在 Spinner 上选择项目时出现 NullPointerException

android - Supwerpoered SDK AdvanceAudioPlayer Seek在Android上不起作用

java - glide 不从 SD 卡加载图像

database - Redis 4.0混合AOF+RDB

View 与新表的数据库性能

java - 将值从 MainActivity 传递到自定义 ListView 适配器类

java - 从选定的列表项中选择一个 TextView