【问题标题】:How to represent user application settings in Android如何在 Android 中表示用户应用程序设置
【发布时间】:2015-05-01 20:15:27
【问题描述】:

我正在开发一个 android 应用程序,但在决定保存应用程序数据的架构时遇到了麻烦。 以下案例:

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

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

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

谢谢

【问题讨论】:

    标签: android preferences user-data preset


    【解决方案1】:

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

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

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

    将这两个列表存储在共享首选项中。

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

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

    例子:

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

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

    【讨论】:

    • 好的,这个想法,给最挑选的对象打分并按它排序很好。但我没想过使用 SQL DB 来保存数据。对于我个人认为的灵活数据,xml 文档更好,因为我不必向我的数据库添加列或新表。只需将一个节点添加到 xml 树并在关闭时将其保存回来。
    • 我还没有将数据直接存储到 xml(通过 SharedPrefs 间接)。如果它适合您的模型,那就太棒了!
    • 谢谢。也很高兴知道,这不是一个微不足道的挑战。如果经常倾向于做它比它更复杂。
    • 当然!让我知道结果如何
    猜你喜欢
    • 1970-01-01
    • 2021-07-26
    • 2015-02-01
    • 1970-01-01
    • 2016-02-11
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多