【问题标题】:How to save a MutableList with SharedPreferences?如何使用 SharedPreferences 保存 MutableList?
【发布时间】:2019-04-17 18:27:39
【问题描述】:

我想在我的 Android 应用中使用SharedPreferences 保存并获取MutableList

我试过了,但它不正确:

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

【问题讨论】:

  • 您遇到的具体错误是什么?
  • 该代码没有保存任何内容,这只是我想要存储可变列表的方式(代码)的示例

标签: android kotlin sharedpreferences


【解决方案1】:

putStringSet() 收到一个Set&lt;String&gt;,您可以将您的MutableList&lt;String&gt; 转换为设置做:

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

然后,您可以在检索它时将其转换回MutableList&lt;String&gt;

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

请注意,使用 StringSet 在读回元素时不会保留元素的顺序,因为 SharedPreferences 使用 HashSet。此外,它不支持重复元素

如果您的用例需要存储支持重复元素的有序列表,请考虑编组列表并将其保存为单个字符串。

例如,使用不会包含在字符串中的字符作为分隔符(例如,|)将所有字符串连接在一起。然后你可以split()他们在读回来的时候分开。

如果列表太长,则应考虑使用不同的数据存储。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多