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

时间:2015-04-16 22:21:02

标签: android sqlite sharedpreferences

如果有人能够想出一个更好的方式来提出这个问题会很好,因为我不确定如何最好地总结它。

在我的应用程序中,我目前有3种类型。 A,B和C.当应用程序首次启动时将不存在,并且随着用户创建它们而产生更多类。它们也可以在用户选择时删除和编辑。

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

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

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

我知道如何在基本级别的android上使用SQL,如果没有存在多维,我会使用它。有没有办法让它适用于数据库?

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

3 个答案:

答案 0 :(得分:4)

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

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

TableA包含所有tableAs。 TableB包含所有tableB。 TableC包含所有tableCs

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

TableBCMap的工作方式相同,但适用于表B和C.

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

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

答案 1 :(得分:0)

在我们的某个制作应用中,我们使用Cupboard。它使用起来非常简单,可以满足您的大部分需求。是否能很好地抽象出SQL和其他混乱。不是真的"答案"但有一个建议。 :)

答案 2 :(得分:0)

您可以尝试green-dao ORM。您描述的关系可以通过它轻松实现。不需要SQL知识。