Android 集合数据在Sharedpreferences中的增删改查

Android 集合数据在Sharedpreferences中的增删改查

Sharedpreferences作为一个轻量化的Android本地存储方式

相信很多人都为其不能存集合而烦恼

所以呢,我封了两个简易的方法

希望有幸能帮到同仁

这个方法是~(传入要保存的集合)~(传null或者size为0)~(新集合覆盖集合)

/*
     *作者:赵星海
     *时间:18/06/08 09:51
     *用途:增改sp的数组  name-自定义集合的名称 
     */
    public static boolean setArray(Context mContext, List<String> list,String name) {
        SharedPreferences sp = mContext.getSharedPreferences(name+"List", mContext.MODE_PRIVATE);
        SharedPreferences.Editor mEdit1 = sp.edit();

        if (list==null){ //清空
            mEdit1.putInt(name+"size", 0);
            int size = sp.getInt(name+"size", 0);
            for (int i = 0; i < size; i++) {
                if (sp.getString(name + i, null) != null) {
                    mEdit1.remove(name + i);
                }
            }
        }else {
            if (list.size()==0){ //清空
                mEdit1.putInt(name+"size", 0);
                int size = sp.getInt(name+"size", 0);
                for (int i = 0; i < size; i++) {
                    if (sp.getString(name + i, null) != null) {
                        mEdit1.remove(name + i);
                    }
                }
            }else {
                mEdit1.putInt(name+"size", list.size());
                if (list.size() > 10) {
                    list.remove(0);   //只保留后10条记录
                }
                for (int i = 0; i < list.size(); i++) {
                    mEdit1.remove(name + i);
                    mEdit1.putString(name + i, list.get(i));
                }
            }
        }
        return mEdit1.commit();
    }

这个方法是~(输入集合的命名直接拿)

/*
     *作者:赵星海
     *时间:18/06/08 09:51
     *用途:加载sp的数组 name-自定义集合的名称
     */
    public static List<String> getArray(Context mContext,String name) {
        ArrayList<String> list = new ArrayList<String>();
        if (mContext.getSharedPreferences(name+"List", mContext.MODE_PRIVATE) != null) {
            SharedPreferences mSharedPreference1 = mContext.getSharedPreferences(name+"List", mContext.MODE_PRIVATE);
            int size = mSharedPreference1.getInt(name+"size", 0);
            for (int i = 0; i < size; i++) {
                if (mSharedPreference1.getString(name + i, null) != null) {
                    list.add(mSharedPreference1.getString(name + i, null));
                }
            }
        }
        return list;
    }

注意事项:

就一句: 集合名字不能相同,卸载app数据会消失

猜你喜欢

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