【问题标题】:Best way to store a list in Android [closed]在 Android 中存储列表的最佳方式 [关闭]
【发布时间】:2015-05-07 09:41:53
【问题描述】:

我目前有一个从远程服务器获取资源列表的 ContentProvider。数据存储在 SQLite 数据库中。

从此列表中,用户可以将多个项目添加到他们的收藏夹中。然后,他们的应用程序必须跟踪列表中的 ID。跟踪收藏夹列表的最佳方式是什么?

我想到了几个……

  1. 在 SQLite 表中有一个标志来标记它是否已被收藏。
  2. 序列化 ID 列表并使用共享首选项进行存储
  3. 使用另一个 SQLite 数据库存储它

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    这取决于。

    我会推荐 variant 1,因为它可以让您的数据结构保持简单,并且您只需再添加一个标志。 (如果表格已经存在,这将需要您更改表格?)

    我在自己创建的应用程序中也做过同样的事情,而且运行速度非常快。如果它在同一个模型中加注星标,您也可以获得信息,因此如果您需要此信息以在详细视图中显示它,则不需要任何额外的逻辑


    变体 2 是一个非常糟糕的主意,它会非常慢。 (与 sqlite 解决方案相比速度较慢)


    变体 3。您不需要其他 SQLite 数据库。您将不得不添加一个引用主数据模型的新模型。但这只有在你有 1:n 关系时才有意义

    【讨论】:

      【解决方案2】:

      在我看来,第一个在 SQlite 表中有一个标志来将一行标记为收藏是最好的选择。使用这种方法,您只需从 db 读取数据一次,就知道哪些数据被标记为收藏。

      【讨论】:

        【解决方案3】:

        您说您需要跟踪收藏夹列表?我假设这意味着您想要相当定期地使用收藏夹列表。

        每次您希望阅读收藏夹列表时都必须遍历整个表格,对我来说,创建另一个包含所有标记为收藏夹的 ID 的表格是有意义的。您可以以很少的成本经常阅读此表。

        此表中的 ID 将用作链接到主表的外键。

        【讨论】:

        • 我喜欢这个想法,但是这对于 ContentProviders 有什么作用呢?我需要一些方法将表格“加入”在一起——这是我的主要问题。
        • 您需要创建一个单独的“DBHelper”类来处理所有数据库内容。有了这个,执行一个 SQL JOIN 查询来......好吧..将表连接在一起。
        【解决方案4】:

        我认为您的第一个想法是最好的,因为您不必再​​次匹配数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-28
          • 2012-10-03
          • 1970-01-01
          • 1970-01-01
          • 2014-07-08
          • 2021-10-29
          相关资源
          最近更新 更多