最近项目中需要用到将数据缓存至本地的逻辑
一开始准备用数据库来进行处理,但是感觉太麻烦了,后来因为懒癌复发,决定用sp做存储,而且数据也不多,一个list集合,数据比较少,写了个工具类,可以参考下
sp的存储都是类似map的key-value方式,而且是覆盖试的存储(如果key一样后面一次存储的会覆盖前面一次存储的值)这个map里面不能有重复值类似,好了,不多说,直接上代码
package com.example.mytestdemo1.util;
import android.content.SharedPreferences;
import com.example.mytestdemo1.bean.Student;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.List;
/**
* 类说明:SP工具类
* 作者:lp
* 时间:2019/8/8
*/
public class SharedPreferencesUtils {
private static SharedPreferences preferences;
private static SharedPreferences.Editor editor;
public static void setPreferences(SharedPreferences preferences) {
SharedPreferencesUtils.preferences = preferences;
}
/**
* 保存List以及在SP中的key-->className
* @param className
* @param datalist
*/
public static void setDataList(String className,List<Student> datalist) {
if (null == datalist || datalist.size() <= 0)
return;
Gson gson = new Gson();
//转换成json数据,再保存
editor = preferences.edit();
String Json = gson.toJson(datalist);
editor.putString(className, Json);
editor.commit();
}
/**
* 获取List
*
* @param className
* @return
*/
public static List<Student> getDataList(String className) {
List<Student> datalist;
String Json = preferences.getString(className, null);
if (null == Json) {
return null;
}
Gson gson = new Gson();
datalist = gson.fromJson(Json, new TypeToken<List<Student>>() {}.getType());
return datalist;
}
}
加油加油!