【问题标题】:Store Arraylist of custom objects存储自定义对象的 Arraylist
【发布时间】:2013-03-06 08:39:05
【问题描述】:

我在共享首选项中保存了自定义对象的 ArrayList,如下所示:

SharedPreferences prefs = context.getSharedPreferences("prefName", Context.MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putStringSet("myList", new Gson().toJson(arraylist).toString());
editor.apply();  

通过这样做,一旦值被保存,但当我退出应用程序并重新启动并尝试保存新值时,旧值就消失了。
知道如何保存旧值并附加新值吗?
我想将所有值保存在同一个数组中,并保存数组以在每次应用加载时显示值。

【问题讨论】:

  • 旧的价值观自然会消失。如果你需要追加,那么你需要阅读原始的,追加新的并保存回来。
  • @AleksG.. 好吧,我实现了这个.. 谢谢

标签: android json arraylist


【解决方案1】:

prefName 中读取myList,将arraylist 附加到已保存在首选项中的内容,将myList 写回首选项。

【讨论】:

    【解决方案2】:

    此代码可能适合您。

     SharedPreferences setting=context.getSharedPreferences("prefName", Activity.MODE_PRIVATE);
     SharedPreferences.Editor edit=setting.edit();
     edit.putStringSet("myList", new Gson().toJson(arraylist).toString());
     edit.commit();
    

    【讨论】:

    • 每当您想更改值时,请将此代码放入方法中。再次调用该方法。
    • 我真的很想知道谁赞成这个答案,因为它只是用commit() 替换apply(),这绝对是不是问题的原因。恰恰相反,它甚至会影响 UI 线程的性能。
    • 我已经在做这个了。它只是把东西保存到首选项中......请再次阅读我的问题。
    • 获取该 listArray 并将 新值 附加到列表中,然后将其存储在共享首选项中。
    【解决方案3】:

    我之前遇到过这个问题...使用泛型它将附加值而不是替换旧数据...

    【讨论】:

    • @Noman 请阅读如何在 java 中使用泛型。它可能对您未来的问题有用...
    猜你喜欢
    • 2013-03-02
    • 2015-11-26
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多