Как сохранить MutableList с SharedPreferences? - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу сохранить и получить MutableList, используя SharedPreferences в моем приложении для Android.

Я пробовал это, но это не правильно:

private fun saveFavorite(saveFavorite : MutableList<String>) {
    val sharedPref = this.getPreferences(Context.MODE_PRIVATE) ?: return
    with(sharedPref.edit()) {
        putStringSet("lastFavorite",saveFavorite)
        apply()
    }
}

1 Ответ

3 голосов
/ 17 апреля 2019

putStringSet() получает Set<String>, вы можете конвертировать MutableList<String> в значение:

putStringSet("lastFavorite", saveFavorite.toSet())

И затем вы можете преобразовать его обратно в MutableList<String>, когда получите его:

getStringSet("lastFavorite", setOf<String>()).toMutableList()

Имейте в виду, что использование StringSet не сохранит порядок элементов при чтении их обратно, поскольку SharedPreferences использует HashSet. Также не поддерживает повторяющиеся элементы .

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

Например, объединяя все строки вместе, используя символ, который не будет содержаться в ваших строках в качестве разделителя (например, |). Затем вы можете split() разнести их, читая их обратно.

Если список слишком длинный, вам следует рассмотреть другое хранилище данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...