是否可以在SharedPreferences中存储值为ArrayList的HashMap?

时间:2016-04-28 13:53:25

标签: android hashmap sharedpreferences persistence

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

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

1 个答案:

答案 0 :(得分:0)

  

是否可以将此类HashMap保存到SharedPreferences?

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

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

  

如果没有,另一种选择是什么?

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