【问题标题】:How to save data to sharedpreference in a flexible way如何以灵活的方式将数据保存到 sharedpreference
【发布时间】:2018-01-24 00:05:09
【问题描述】:

我将选择的项目保存到共享首选项中,但是当用户在运行时(从任何位置)删除这些项目中的任何一个,并且我使用保存的大小(在下面的代码中)循环访问这些项目时,以及问题来了

假设我有 5 件物品(item_1 - item_2 - item_3 - item_4 - item_5)

如果用户删除了 item_2,我将 selected_items_size 更新为 4,并从共享首选项中删除 item_2。

但是当我稍后加载项目时,我使用(大小 = 现在是 4),如下面的代码中将错过 item_5,如何解决这个问题,有什么建议或更好的方法来实现我需要的吗?

    mSharedPreference = getSharedPreferences("chosen_items", MODE_PRIVATE);
    int size = mSharedPreference.getInt("chosen_items_size", 0);
    for(int i = 1; i <= size; i++) {

       mSharedPreference.getString("item_" + i, null);

    }

知道我想要启用拖放项目,使用上述方法将很难(如果可能的话)完成,还有更好的方法来保存和检索数据/项目吗?

谢谢

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    如果您有少量字符串,您可以将它们存储在 SharedPreferences 中的一个分隔字符串中,例如 so。您还可以将一些元数据与每个项目相关联并对其进行定界。

    【讨论】:

    • 或者您可以只使用 JSON 数组而不是发明自己的编码。
    • 家小应该是吧?有长度限制吗?
    • 长度受 java.lang.String 或您的可用堆空间限制,以先到达者为准。通常它以兆字节为单位。
    【解决方案2】:

    您可以使用内置的 SQL lite 数据库。
    这些数据必须在会话之间保留吗?如果不使用类和静态变量/数组将其存储在本地。

    【讨论】:

    • 是的,它必须在会话之间持续存在。
    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 2016-03-27
    • 2019-05-24
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多