第一种情况:SP保存集合数据
基本思路是将List数据转换成json格式字符串数据,再将String保存到本地SP当中,取值的时候再把保存的json字符串进行解析,获取到值就OK啦
val list = ArrayList<String>()
list.add("需要保存的内容")
val gson = Gson()
val json = gson.toJson(list)
SPUtils.put(this,"content",json)
val json = SPUtils.get(this, "content", "") as String
val gson = Gson()
val type = object : TypeToken<List<String>>(){
}.type
val result = gson.fromJson<List<String>>(json, type)
第二种情况:保存历史记录(SP的数据不被覆盖)
有时候项目中只有一小部分需使用保存历史记录,如果使用数据库有点杀猪焉用牛刀的感觉,那如何用SP保存多条历史记录了,基本的实现思路就是在第一种情况的基础上,把保存记录之前的数据先查询出来,再用集合addAll进去,然后再次保存新的集合,这样就实现了每次SP进去的数据不会被覆盖掉
val list = ArrayList<String>()
val json = SPUtils.get(this, "content", "") as String
val gson = Gson()
val type = object : TypeToken<List<String>>(){
}.type
val result = gson.fromJson<List<String>>(json, type)
if (result == null){
list.add("首次保存的内容")
}else{
list.add("再次保存的内容")
list.addAll(result)
}
val json = gson.toJson(list)
SPUtils.put(this,"content",json)