0

我正在开发一个 android 应用程序,并且无法决定保存应用程序数据的架构。以下案例:

在应用程序中,用户可以创建新的通用对象并为其提供所需的属性。为了支持这一点,我想在创建输入表单之前给他们一个收藏列表,例如汽车。它具有颜色、重量、速度、马力等。因此用户可以选择一个经常挑选的对象(例如汽车),并将获得他必须填写的表格的适当字段(颜色、重量......)。这个列表应该很聪明。您选择的项目越多,它在列表中的显示位置就越高。并且此预设必须在首选项中可编辑。

这就是重点。我应该使用 android 的首选项框架来实现我的想法(将其作为不同的首选项类型保存到 xml 并简单地加载适当的首选项构建器)还是应该创建自己的 xml 对象并将其保存到自己创建的用户文件位置?

我的第二个问题:如果我使用首选项框架方法....这对在运行时动态添加条目有好处吗?资源位于 res 文件夹中,但如果有单独的用户条目怎么办?它们是否也会保存在程序文件夹中,或者是否有一个特殊的用户数据文件夹,文件(可能是加密的)在其中?

谢谢

4

1 回答 1

0

在 SharedPreferences 中存储如此复杂的数据是很棘手的。我的意思是假设用户创建了 4 个对象,每个对象有 8 个属性。您将在 sharedprefs 中存储 4*8 值并映射它们。

可以做的是维护用户创建的对象的数组列表。与该列表连续维护计数器数组列表并根据用户单击对象的次数在内部不断交换两个列表。例子:

List Name                List Counter
ObjA                        5
ObjB                        3
ObjC                        1
ObjD                        1

将这两个列表存储在 Shared Prefs 中。

现在,对于对象的属性部分(出现2种可能性):

为每个对象的名称维护一个 mySQL DB 和一个表。如果您需要存储用户为对象创建的每个实例,则可以在其中存储每列的值。(每次用户单击对象时,只显示他/她表的列名并存储输入的值)

例子 :

ObjA Table :

Color   speed   horsepower   rpm
________________________________
red      20mph    100        3000
black    80mph    500        8000

连续地,如果您不想存储每个实例值,则可以创建另一个以对象为键和属性的 Arraylist 作为值的 sharedPrefs。

于 2015-05-01T20:34:13.603 回答