如何在 Android 应用程序中 save/store 对象的多维列表?
How to save/store multi dimensional list of objects in an Android Application?
如果有人能想出更好的方式来问这个问题,那就太好了,因为我不确定如何最好地总结它。
在我的应用程序中,我目前有 3 种类型的 class。 A、B 和 C。None 将在应用程序首次启动时存在,并且随着用户创建它们,随着时间的推移会产生更多 classes。它们也可以根据用户的选择进行删除和编辑。
- 我的应用程序包含一个对象列表 A。
- Class A 有各种任意字段 + 对象列表 B(每个 B 只会在 A 的一个实例中)。
- Class B有各种任意字段+对象列表C(每个C只会在B的一个实例中)。
- Class C 只是具有任意字段的标准 class。
保存这些 class 实例的最佳方法是什么?
我当前的方法是将对象 A 的主要列表保存在扩展应用程序 class 中,然后将序列化列表对象保存为 SharedPreference 或保存在数据库中。然后 load/save 每当应用程序重新启动或暂停等时它都会启动。这是个好主意吗?
我知道如何在基础水平上使用 SQL on android,如果不是存在多个维度,我会使用它。有没有办法让它与数据库一起工作?
如有任何其他建议,我们将不胜感激。谢谢。
在我们的一个生产应用程序中,我们使用 Cupboard。它使用起来非常简单,可以满足您的大部分需求。在抽象出 SQL 和其他混乱方面做得很好。不是 "answer" 而是一个建议。 :)
这让我尖叫数据库。它具有多层的事实使其对于数据库比对于共享首选项更好。这就是 SQL 和关系数据库的用途 - 描述数据之间的关系和层次结构。
你想要的是一个有 5 个表的数据库
TableA 包含所有 tableAs。
TableB 包含所有的 tableB。
TableC 包含所有的 tableCs
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。如果您只了解基础知识,它就是一个非常强大的工具。我的建议是不要躲在图书馆后面并使用它来完成工作——你需要真正理解这类东西才能有效地使用它。
您可以尝试 green-dao ORM。您描述的关系可以很容易地用它来实现。不需要 SQL 知识。
如果有人能想出更好的方式来问这个问题,那就太好了,因为我不确定如何最好地总结它。
在我的应用程序中,我目前有 3 种类型的 class。 A、B 和 C。None 将在应用程序首次启动时存在,并且随着用户创建它们,随着时间的推移会产生更多 classes。它们也可以根据用户的选择进行删除和编辑。
- 我的应用程序包含一个对象列表 A。
- Class A 有各种任意字段 + 对象列表 B(每个 B 只会在 A 的一个实例中)。
- Class B有各种任意字段+对象列表C(每个C只会在B的一个实例中)。
- Class C 只是具有任意字段的标准 class。
保存这些 class 实例的最佳方法是什么?
我当前的方法是将对象 A 的主要列表保存在扩展应用程序 class 中,然后将序列化列表对象保存为 SharedPreference 或保存在数据库中。然后 load/save 每当应用程序重新启动或暂停等时它都会启动。这是个好主意吗?
我知道如何在基础水平上使用 SQL on android,如果不是存在多个维度,我会使用它。有没有办法让它与数据库一起工作?
如有任何其他建议,我们将不胜感激。谢谢。
在我们的一个生产应用程序中,我们使用 Cupboard。它使用起来非常简单,可以满足您的大部分需求。在抽象出 SQL 和其他混乱方面做得很好。不是 "answer" 而是一个建议。 :)
这让我尖叫数据库。它具有多层的事实使其对于数据库比对于共享首选项更好。这就是 SQL 和关系数据库的用途 - 描述数据之间的关系和层次结构。
你想要的是一个有 5 个表的数据库
TableA 包含所有 tableAs。 TableB 包含所有的 tableB。 TableC 包含所有的 tableCs
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。如果您只了解基础知识,它就是一个非常强大的工具。我的建议是不要躲在图书馆后面并使用它来完成工作——你需要真正理解这类东西才能有效地使用它。
您可以尝试 green-dao ORM。您描述的关系可以很容易地用它来实现。不需要 SQL 知识。