У меня есть ArrayList
с настраиваемыми объектами. Каждый настраиваемый объект содержит множество строк и чисел. Мне нужно, чтобы массив оставался, даже если пользователь покидает действие, а затем хочет вернуться позже, однако мне не нужен массив, доступный после полного закрытия приложения. Таким образом я сохраняю множество других объектов, используя SharedPreferences
, но я не могу понять, как сохранить таким образом весь мой массив. Это возможно? Может быть, SharedPreferences
- это не способ сделать это? Есть ли более простой метод?
Для Строки, интервала, булевской переменной, лучшим выбором был бы sharedPreferences.
, Если Вы хотите сохранить ArrayList или какие-либо сложные данные. Лучшим выбором была бы библиотека Paper.
Добавляют, что зависимость
implementation 'io.paperdb:paperdb:2.6'
Инициализирует Бумагу
, Должен быть инициализирован однажды в Application.onCreate ():
Paper.init(context);
Сохраняют
List<Person> contacts = ...
Paper.book().write("contacts", contacts);
Загружающиеся Данные
значения по умолчанию Использования, если объект не существует в устройстве хранения данных.
List<Person> = Paper.book().read("contacts", new ArrayList<>());
Здесь Вы идете.
Пожалуйста, используйте эти два метода для хранения данных в ArrayList в kotlin
fun setDataInArrayList(list: ArrayList<ShopReisterRequest>, key: String, context: Context) {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
val editor = prefs.edit()
val gson = Gson()
val json = gson.toJson(list)
editor.putString(key, json)
editor.apply() // This line is IMPORTANT !!!
}
fun getDataInArrayList(key: String, context: Context): ArrayList<ShopReisterRequest> {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
val gson = Gson()
val json = prefs.getString(key, null)
val type = object : TypeToken<ArrayList<ShopReisterRequest>>() {
}.type
return gson.fromJson<ArrayList<ShopReisterRequest>>(json, type)
}