就像问题所问。由于我正在使用ArrayLists和片段,因此在保存和加载正在使用的应用程序的共享首选项时遇到了一些麻烦。
我在下面发布了答案,希望它可以帮助可能像我一样被绊倒的任何人。
答案 0 :(得分:0)
这是一个快速的模板,可以将列表保存到您正在制作的任何应用程序中的共享首选项中(此代码以及loadList都位于OnCreate方法之外:
private void saveList(ArrayList<YourObject> yourList, String yourKey) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this.getApplicationContext());
SharedPreferences.Editor prefsEditor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(yourList);
prefsEditor.putString(yourKey, json);
prefsEditor.apply();
}
在显示...(this.getApplicationContext());
的地方,对于片段,您将使用...(getActivity());
此外,请确保最后使用.apply();
而不是.commit();
,因为apply在后台运行。
此保存方法还适用于任何对象,而不仅限于列表。您所需要做的就是代替...saveList(ArrayList<YourObjectItems> yourList,...
,只需输入一个不同的对象,例如...saveList(String yourString,...
-------------------------------- ----------- ------------ ----------- -----------< / em>-----------< em>-----------------------------
这是loadList方法的模板:
private ArrayList<YourObject> loadList(String yourKey) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this.getApplicationContext());
Gson gson = new Gson();
String json = prefs.getString(yourKey, null);
Type type = new TypeToken<ArrayList<YourObject>>() {}.getType();
return gson.fromJson(json, type);
}
如果您要加载列表以外的内容,则将String值放在倒数第二行:Type type = new TypeToken<String>() {}.getType();
重要!!!
为了使用Gson()
,您必须输入
implementation 'com.google.code.gson:gson:2.8.2'
在Gradle脚本的“依赖项”下-> build.gradle (Module: app)
。
我相信这应该涵盖所有内容。评论我应该进行的任何编辑。希望这可以帮助一些人。另外,仅供参考,我在基于Android 7.0的API 24构建的应用程序中使用了此功能。我不知道这是否适用于旧版本,但是新版本应该可以处理它。