使用Gson从共享首选项中检索列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Gson从共享首选项中检索列表相关的知识,希望对你有一定的参考价值。
我首先尝试使用Gson共享首选项,我使用此方法将对象列表转换为Json并将其保存在共享首选项中并且工作正常
public Builder add(String key, List value) {
Gson gson = new Gson();
editor.putString(key, gson.toJson(value));
return this;
}
其次,我使用此方法检索列表
public <T> List<T> get(String key, Class<T> classType) {
if (preferences.contains(key)) {
Gson gson = new Gson();
Type type = new TypeToken<List<classType>>() {
}.getType();
return gson.fromJson(get(key, ""), type);
} else {
return null;
}
}
我希望这个方法检索列表,例如当我做List it say Unknown class时。
怎么能做到这一点?
答案
像这样保存列表
public static void saveData(Context context, ArrayList<YOUR MODEL> model) {
String s = new Gson().toJson(model);
SharedPreferences preferences = context.getSharedPreferences(*your preference name*, Context.MODE_PRIVATE);
preferences.edit().putString(*key*, s).apply();
}
得到这样的清单
public static ArrayList<YOUR MODEL> getData(Context context) {
SharedPreferences preferences = context.getSharedPreferences(*your preference name*, Context.MODE_PRIVATE);
String s = preferences.getString(*key*, "");
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<YOUR MODEL>>() {
}.getType();
ArrayList<YOUR MODEL> list = gson.fromJson(s, type);
return list;
}
希望这是你想要的!
以上是关于使用Gson从共享首选项中检索列表的主要内容,如果未能解决你的问题,请参考以下文章