Вот быстрый шаблон для сохранения списка в sharedpreferences в любом приложении, которое вы делаете (это, как и 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();
в конце, так как применяются прогоны в фоновом режиме.
Этот метод сохранения также работает с любым объектом, а не только со списками. Все, что вам нужно сделать, это вместо ...saveList(ArrayList<YourObjectItems> yourList,...
, просто введите другой объект, такой как ...saveList(String yourString,...
- - - - - - - - - - - - - - - - - * 1 042 * - - * +1044 * - - * тысяча сорок-шесть * - - - * +1049 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * тысяча девяносто четыре * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Вот шаблон для метода 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);
}
Если вы хотите загрузить что-то кроме списка, скажем, строковое значение, со второй до последней строки вы должны поставить: Type type = new TypeToken<String>() {}.getType();
ВАЖНО !!!
Чтобы использовать Gson()
, необходимо поставить
implementation 'com.google.code.gson:gson:2.8.2'
в разделе "зависимости" в скриптах Gradle -> build.gradle (Module: app)
.
Я считаю, что это должно охватывать все. Прокомментируйте любые изменения, которые я должен сделать. Надеюсь, это поможет некоторым людям. Кроме того, к вашему сведению, я использую это в приложении, которое создаю на основе сборки API 24 с Android 7.0. Я не знаю, работает ли это для более старых версий, но новые версии должны справиться с этим.