MMKV官方介绍,简单使用都在里面,和SharedPreferences的使用方式雷同
https://mp.weixin.qq.com/s/4MHgs4qpLt7krpmIp9rgRg
之前用SharedPreferences存集合:
https://blog.csdn.net/qq_39731011/article/details/81513956
改用MMKV存储集合? ? ? ?
import android.content.Context;
import com.google.gson.Gson;
import com.tencent.mmkv.MMKV;
import java.util.ArrayList;
import java.util.List;
public class MMKVUtils {
/*
*作者:赵星海
*时间:18/06/08 09:51
*用途:增改sp的数组 name-自定义集合的名称
*/
public static <T> Boolean setArray(Context mContext, List<T> list, String name) {
MMKV kv = MMKV.defaultMMKV();
if (list == null || list.size() == 0) { //清空
kv.putInt(name + "size", 0);
int size = kv.getInt(name + "size", 0);
for (int i = 0; i < size; i++) {
if (kv.getString(name + i, null) != null) {
kv.remove(name + i);
}
}
} else {
kv.putInt(name + "size", list.size());
if (list.size() > 20) {
list.remove(0); //只保留后20条记录
}
for (int i = 0; i < list.size(); i++) {
kv.remove(name + i);
kv.remove(new Gson().toJson(list.get(i)));//删除重复数据 先删后加
kv.putString(name + i, new Gson().toJson(list.get(i)));
}
}
return kv.commit();
}
/*
*作者:赵星海
*时间:18/06/08 09:51
*用途:加载sp的数组 name-自定义集合的名称
*/
public static <T> ArrayList<T> getArray(Context mContext, String name, T bean) {
MMKV kv = MMKV.defaultMMKV();
ArrayList<T> list = new ArrayList<T>();
int size = kv.getInt(name + "size", 0);
for (int i = 0; i < size; i++) {
if (kv.getString(name + i, null) != null) {
try {
list.add((T) new Gson().fromJson(kv.getString(name + i, null), bean.getClass()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
return list;
}
}
如果要实现存历史记录,最新的数据在最前面:
只需要存的时候每次新数据存到头部就可以:
mSearchRecordsList.add(0, it );
MMKVUtils.setArray(activity, mSearchRecordsList, "SearchRecords");
|