Сохранить список массивов в SharedPreferences

У меня есть ArrayList с настраиваемыми объектами. Каждый настраиваемый объект содержит множество строк и чисел. Мне нужно, чтобы массив оставался, даже если пользователь покидает действие, а затем хочет вернуться позже, однако мне не нужен массив, доступный после полного закрытия приложения. Таким образом я сохраняю множество других объектов, используя SharedPreferences , но я не могу понять, как сохранить таким образом весь мой массив. Это возможно? Может быть, SharedPreferences - это не способ сделать это? Есть ли более простой метод?

297
задан DonGru 14 August 2011 в 09:43
поделиться

2 ответа

Для Строки, интервала, булевской переменной, лучшим выбором был бы 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<>());

Здесь Вы идете.

https://github.com/pilgr/Paper

1
ответ дан 23 November 2019 в 01:31
поделиться

Пожалуйста, используйте эти два метода для хранения данных в 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)
}  
0
ответ дан 23 November 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: