android - 如何在 Android 应用程序中保存/存储对象的多维列表?

标签 android sqlite sharedpreferences

<分区>

如果有人能想出更好的方式来问这个问题,那就太好了,因为我不确定如何最好地总结它。

在我的应用程序中,我目前有 3 种类型的类(class)。 A、B 和 C。当应用程序首次启动时,都不存在,并且随着用户创建它们,随着时间的推移会产生更多的类。它们也可以根据用户的选择进行删除和编辑。

  • 我的应用包含对象 A 的列表。
  • 类 A 有各种任意字段 + 对象列表 B(每个 B 只会在 A 的一个实例中)。
  • B 类有各种任意字段 + 对象列表 C(每个 C 只会在 B 的一个实例中)。
  • C 类只是一个具有任意字段的标准类。

保存这些类实例的最佳方法是什么?

我当前的方法是将对象 A 的主要列表保存在扩展的 Application 类中,然后将序列化列表对象保存为 SharedPreference 或保存在数据库中。然后在应用程序重新启动或暂停等时加载/保存它。这是个好主意吗?

我知道如何在基本级别的 android 上使用 SQL,如果不是存在多个维度,我会使用它。有没有办法让它与数据库一起工作?

任何其他建议将不胜感激。谢谢。

最佳答案

这让我尖叫着数据库。它具有多层的事实使其对于数据库比对于共享首选项更好。这就是 SQL 和关系数据库的用途 - 描述数据之间的关系和层次结构。

你想要的是一个有 5 个表的数据库

TableA 包含所有的tableAs。 TableB 包含所有的 tableB。 TableC持有所有的tableC

TableABMap 有 2 列 parentID 和 childID。 parentID 是映射到表 A 中的一行的外键。 childID 是映射到表 B 中的一行的外键。如果您是关于订单的,请添加第 3 列(订单)。

TableBCMap 的工作原理相同,但用于表 B 和 C。

要获取 A 中的所有 B,您只需执行一个简单的子查询“SELECT * from TableB WHERE id in (SELECT childid from TableABMap where parentid= object_a_you_want)”

我认为您可能应该为此学习一些 SQL。如果您只了解基础知识,它就是一个非常强大的工具。我的建议是不要躲在图书馆后面并使用它来完成工作 - 你需要真正理解这类东西才能有效地使用它。

关于android - 如何在 Android 应用程序中保存/存储对象的多维列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687012/

相关文章:

android - 如何使微调器宽度与最大可用项目宽度相同

java - getApplicationContext() 上的空指针异常

c - 库例程调用无序错误

python - 使用 `executemany` 更新现有 SQLite3 数据库中的条目(使用 Python sqlite3)

iphone - 在 xcode for iphone 中带有 LIKE 语句的 sqlite

Android 保存复选框首选项

java - CardView 中的进度条在 Recyclerview 中不起作用

java - 使用 Http post 的结果打开 WebView

android - 如何在重新打开应用程序后检索 editText 保存的值?

java - 如何将字符串转换为 JSONArray?