【问题标题】:Is it possible to store a HashMap with the value as an ArrayList in SharedPreferences?是否可以在 SharedPreferences 中将值为 ArrayList 的 HashMap 存储?
【发布时间】:2016-04-28 13:53:24
【问题描述】:

我有一个HashMap<Integer, ArrayList<MyTeam>>,其中MyTeam 类是一个POJO。每个ArrayList 对象中最多有5 个项目。这种HashMap可以保存到SharedPreferences吗?如果不是,还有什么替代方案?我需要在应用关闭时保存这些数据,并在应用启动时重新加载。

我查看了this 的答案,但 Key 和 Value 属性都是字符串,我的情况比字符串数据类型要复杂一些。这种方法还能用吗?有没有更好的办法?

【问题讨论】:

  • 将其转换为 JSON 对象,然后保存到 sharedpreferences
  • 你可以试试Set,结账here

标签: android hashmap sharedpreferences persistence


【解决方案1】:

这种HashMap可以保存到SharedPreferences吗?

不直接。欢迎您将其转换为 JSON 并将其保存为字符串首选项。然后,要重新加载它,您将读取字符串并使用 JSON 解析器来重构您的对象。

This class 演示了基本技术,尽管它保存的是List<Uri>,而不是HashMap<Integer, ArrayList<MyTeam>>。我专门用这个示例来演示内置JSONReaderJSONWriter类的使用;对于一个真正的应用程序,我会考虑 Gson 或类似的JSON parsing library

如果不是,还有什么替代方案?

可能通过几个表将其保存到 SQLite 数据库。或者,以您选择的文件格式(例如 JSON、XML)将其保存到某种文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多