2013-03-06 86 views
1

我已经在共享偏好保存的自定义对象的ArrayList是这样的:商店,ArrayList对象

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

这样一来,一旦值被保存,但是当我从应用程序退出并重新启动,并尝试保存新的价值观然后旧的价值观消失了。
任何想法如何保存旧值并追加新值?
我想保留在同一个数组中的所有值,并保持数组保存,以显示每次应用程序加载时的值。

+1

自然的旧值将会消失。如果您需要追加,那么您需要阅读原始文件,追加新文件并保存。 – 2013-03-06 08:41:19

+0

@AleksG ..好的男人我执行此..谢谢 – Noman 2013-03-06 08:49:06

回答

1

prefName读取myList,将arraylist附加到已保存在偏好设置中的内容,将myList回写到偏好设置。

+0

好的男人我执行此..谢谢 – Noman 2013-03-06 08:49:56

0

此代码可能适合您。

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

只要你想改变的价值把这个代码的方法。再次调用该方法。 – 2013-03-06 09:13:38

+0

我真的想知道谁回答了这个问题,因为它什么都不做,只是用'commit()'替换'apply()',这肯定不是问题的原因。恰恰相反,它甚至可以在UI线程上创建性能。 – 2013-03-06 09:40:01

+0

其工作在我的情况。 – 2013-03-06 09:48:04

0

我甲肝遇到这个问题早...使用泛型它会追加值,而不是替换旧DATAS ....

+0

如何使用泛型? – Noman 2013-03-08 07:00:32

+0

@Noman请仔细阅读如何在Java中使用泛型..它可能会对你将来的问题有用... – kajothan 2013-03-11 09:21:35

+0

@kajothan ...我通过保存在首选项中完成了此操作...谢谢 – Noman 2013-03-11 13:03:25