我有包含ArrayLists的ab ArrayList,它们又包含列表。字符串之一和视图之一。我怎么能将这个根列表保存到共享首选项或其他任何一个?以下是概述:
MotherList
|
.
DaughterLists
/ \
/ \
ListOfViews ListOfStrings
.
.
答案 0 :(得分:0)
以下是有关在SharedPreferences中放置数据的所有方法: putBoolean(String key,boolean v) putInt(String k,int v) putFloat(String k,float v) putLong(String k,long v) putString(String k,String v) putStringSet(String k,Set v)
但是有一个名为ASimpleCache的开源框架可以解决它:
保存: ACache acache = ACache.get(Context); acache.put(“钥匙”,你的根目录的列表); 得到: acache.getAsObject( “钥匙”);
答案 1 :(得分:0)
使用共享偏好设置存储Arraylist
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);
答案 2 :(得分:0)
您好我建议您使用GSON来序列化和反序列化您的列表。通过这种方式,您可以轻松地将其保存在SharedPreferences
上。
首先借助 GSON Converter
将您的ArrayList<List>
对象转换为 JSON
String myArrayListAsJSON = new Gson().toJson(myArrayList); // you will pass your arraylist variable to toJson() method
将{strong> JSON对象保存为String
SharedPreference
SharedPreferences prefs=this.getSharedPreferences("PREF_KEY_FOR_YOUR_APP",Context.MODE_PRIVATE);
Editor edit=prefs.edit();
edit.putString("myListKey", myArrayListAsJSON); // we will put our list hat serialized with GSON here
edit.commit();
在申请的任何地点/时间重复使用您的清单。您只需要反序列化您在Shared Preferences
SharedPreferences prefs=this.getSharedPreferences("PREF_KEY_FOR_YOUR_APP",Context.MODE_PRIVATE);
String myListAsString = prefs.getString("myListKey","default_value");
ArrayList<List> yourObject = new Gson().fromJson(myListAsString, YOUR_MODEL.class);
Gson是一个Java库,可用于将Java对象转换为JSON表示。它还可用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括你没有源代码的预先存在的对象。
您可以在应用中添加此行来使用 GSON 。
compile 'com.google.code.gson:gson:2.6.2'
您可以在GSON Github Page
上找到更多详细信息和示例