Котлин: Как сохранить массив в SharedPreferences - PullRequest
0 голосов
/ 03 июля 2019

Я создал приложение для Android с Kotlin, в этом приложении я использую WS, который предоставляет весь список продуктов. Итак, как мне сохранить список продуктов в SharedPreferences с библиотекой moshi? Вот мой код:

fun setArrayDataBykeyValue(context: Context, key: String, DataArrayList: Array<ProductData>) {
    val gson = Gson()
    val jsonString = gson.toJson(DataArrayList)
    val sp = context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)
    sp.edit().putString(key, jsonString).commit()
}

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Вот как вы можете это сделать.

Moshi moshi = new Moshi.Builder().build();
Type type = Types.newParameterizedType(List.class, Person.class);
JsonAdapter< List > jsonAdapter = moshi.adapter(type);
String json = jsonAdapter.toJson(body.getParams());

, где Person - ваш POJO или некоторый класс модели.

, а затем сохраните эту строку в общем предпочтении.и сделать обратное, как это, чтобы вернуться в список

List<Person> persons = jsonAdapter.fromJson(json);
0 голосов
/ 03 июля 2019

Для этого вы можете использовать библиотеку GSON .

Сначала вы должны преобразовать ArrayList в строку. Например:

val arrayString = Gson().toJson(arrayList)

Затем вы можете сохранить строку в SharedPreference. Чтобы получить строку, вы должны сначала извлечь строку, а затем снова преобразовать ее в ArrayList. Например:

val collectionType = object : TypeToken<ArrayList<String>>() {}.type
arrayList = Gson().fromJson(arrayString, collectionType)

Дайте мне знать, если у вас возникнут какие-либо проблемы в этом отношении.

...