Android MMKV简单使用举例:存储集合

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");

猜你喜欢

转载自blog.csdn.net/qq_39731011/article/details/120046721