如何使用 SharedPreference 保存自定义 ArrayList?
How to save custom ArrayList by using the SharedPreference?
我想知道如何将自定义 ArrayList 保存到 Android Phone。
因为它习惯于过滤器 activity。
我应该将这些信息保存在任何地方。
ArrayList<ListAdapterItemsSelected> mSelectedList = new ArrayList<ListAdapterItemsSelected>();
public class ListAdapterItemsSelected {
public String sText;
public boolean bSelected;
public String getsText() {
return sText;
}
public void setsText(String sText) {
this.sText = sText;
}
public boolean isbSelected() {
return bSelected;
}
public void setbSelected(boolean bSelected) {
this.bSelected = bSelected;
}
public ListAdapterItemsSelected(String _text, boolean _selected) {
sText = _text;
bSelected = _selected;
}
}
现在有通用的方法。您可以通过任何方法将其转换为字符串,例如使用 json 转换器或使用第三方库,例如:
使用 GSON
Gson gson = new Gson();
ArrayList<ListAdapterItemsSelected> mSelectedList = new ArrayList<ListAdapterItemsSelected>();
String jsonString = gson.toJson(mSelectedList);
SharedPreferences sp = context.getSharedPreferences("KEY", Context.MODE_PRIVATE);
//Save to SharedPreferences
sp.edit().putString("KEY", jsonString).commit();
//Get to SharedPreferences
//For default value, just to get no errors while getting no value from the SharedPreferences
String empty_list = gson.toJson(new ArrayList<ListAdapterItemsSelected>());
ArrayList<ListAdapterItemsSelected> mSelectedList = gson.fromJson(sp.getString("KEY", empty_list),
new TypeToken<ArrayList<ListAdapterItemsSelected>>() {
}.getType());
SharedPreferences
不适合这种事情。如果不使用一些讨厌的技巧,您甚至无法轻松存储 List
个 String
,更不用说 List
个自定义对象了。我个人会将 List
作为文件存储在内部存储中,使用 DataOutputStream
首先写入 ArrayList
的大小,然后是 boolean
和 String
对象的值。
我想知道如何将自定义 ArrayList 保存到 Android Phone。 因为它习惯于过滤器 activity。 我应该将这些信息保存在任何地方。
ArrayList<ListAdapterItemsSelected> mSelectedList = new ArrayList<ListAdapterItemsSelected>();
public class ListAdapterItemsSelected {
public String sText;
public boolean bSelected;
public String getsText() {
return sText;
}
public void setsText(String sText) {
this.sText = sText;
}
public boolean isbSelected() {
return bSelected;
}
public void setbSelected(boolean bSelected) {
this.bSelected = bSelected;
}
public ListAdapterItemsSelected(String _text, boolean _selected) {
sText = _text;
bSelected = _selected;
}
}
现在有通用的方法。您可以通过任何方法将其转换为字符串,例如使用 json 转换器或使用第三方库,例如:
使用 GSON
Gson gson = new Gson();
ArrayList<ListAdapterItemsSelected> mSelectedList = new ArrayList<ListAdapterItemsSelected>();
String jsonString = gson.toJson(mSelectedList);
SharedPreferences sp = context.getSharedPreferences("KEY", Context.MODE_PRIVATE);
//Save to SharedPreferences
sp.edit().putString("KEY", jsonString).commit();
//Get to SharedPreferences
//For default value, just to get no errors while getting no value from the SharedPreferences
String empty_list = gson.toJson(new ArrayList<ListAdapterItemsSelected>());
ArrayList<ListAdapterItemsSelected> mSelectedList = gson.fromJson(sp.getString("KEY", empty_list),
new TypeToken<ArrayList<ListAdapterItemsSelected>>() {
}.getType());
SharedPreferences
不适合这种事情。如果不使用一些讨厌的技巧,您甚至无法轻松存储 List
个 String
,更不用说 List
个自定义对象了。我个人会将 List
作为文件存储在内部存储中,使用 DataOutputStream
首先写入 ArrayList
的大小,然后是 boolean
和 String
对象的值。