在SharedPreferences中存储数组列表对象

此方法将新对象添加到数组列表中

//get text from textview time = date.getText().toString(); entry_d = entry.getText().toString(); dayName = day.getText().toString(); arrayList.add( new ArrayObject( dayName, entry_d ,time)); 

我正在尝试在SharedPrefrences中添加这3个string。 这是我的代码:

 private void savePreferences(String key, String value) { SharedPreferences sharedPreferences = PreferenceManager .getDefaultSharedPreferences(this); Editor editor = sharedPreferences.edit(); editor.putBoolean(key, value); editor.commit(); } 

此方法只添加一个string,因为我想一次添加3个string。 有什么方法可以实现吗?

提前致谢。

Solutions Collecting From Web of "在SharedPreferences中存储数组列表对象"

使用Gson库将数组或对象转换为Json,并以JSON格式将数据存储为String。

保存;

 SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); Editor editor = sharedPrefs.edit(); Gson gson = new Gson(); String json = gson.toJson(arrayList); editor.putString(TAG, json); editor.commit(); 

读;

 SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); Gson gson = new Gson(); String json = sharedPrefs.getString(TAG, null); Type type = new TypeToken<ArrayList<ArrayObject>>() {}.getType(); ArrayList<ArrayObject> arrayList = gson.fromJson(json, type); 

使用共享首选项存储数组列表

 SharedPreferences prefs=this.getSharedPreferences("yourPrefsKey",Context.MODE_PRIVATE); Editor edit=prefs.edit(); Set<String> set = new HashSet<String>(); set.addAll(your Arraylist Name); edit.putStringSet("yourKey", set); edit.commit(); 

从共享首选项中检索Arraylist

 Set<String> set = prefs.getStringSet("yourKey", null); List<String> sample=new ArrayList<String>(set); 

不要为此使用Hashset。 这将改变Arraylist的顺序。 使用Gson。 如果你想使用Hashset,你将不得不序列化和反序列化,这将占用资源