最近項目中需要用到將數據緩存至本地的邏輯
一開始準備用數據庫來進行處理,但是感覺太麻煩了,後來因爲懶癌復發,決定用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;
}
}
加油加油!