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.remove(new Gson().toJson(list.get(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;
}
升级版: 直接存储对象:升级日期:2021年8月27日14:19
//使用前确保项目导入了gson的依赖,如没导入直接拷贝: api 'com.google.code.gson:gson:2.6.2'
public class SDFUtils {
/*
*作者:赵星海
*用途:增改sp的数组 name-自定义集合的名称
*/
public static <T> Boolean setArray(Context mContext, List<T> list, String name) {
SharedPreferences sp = mContext.getSharedPreferences(name+"List", Context.MODE_PRIVATE);
SharedPreferences.Editor mEdit = sp.edit();
if (list==null || list.size()==0){ //清空
mEdit.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) {
mEdit.remove(name + i);
}
}
}else {
mEdit.putInt(name+"size", list.size());
if (list.size() > 10) {
list.remove(0); //只保留后10条记录
}
for (int i = 0; i < list.size(); i++) {
mEdit.remove(name + i);
mEdit.remove(new Gson().toJson(list.get(i)));//删除重复数据 先删后加
mEdit.putString(name + i, new Gson().toJson(list.get(i)));
}
}
return mEdit.commit();
}
/*
*作者:赵星海
*用途:加载sp的数组 name-自定义集合的名称
*/
public static <T> List<T> getArray(Context mContext, String name, T bean) {
ArrayList<T> list = new ArrayList<T>();
if (mContext.getSharedPreferences(name+"List", Context.MODE_PRIVATE) != null) {
SharedPreferences mSharedPreference1 = mContext.getSharedPreferences(name+"List", Context.MODE_PRIVATE);
int size = mSharedPreference1.getInt(name+"size", 0);
for (int i = 0; i < size; i++) {
if (mSharedPreference1.getString(name + i, null) != null) {
try{
list.add((T) new Gson().fromJson(mSharedPreference1.getString(name + i, null), bean.getClass()));
}catch (Exception e){
e.printStackTrace();
}
}
}
}
return list;
}
}
注意事项:
就一句: 集合名字不能相同,卸载app数据会消失
标签:mContext,name,改查,sp,list,Sharedpreferences,Android,null,size From: https://blog.51cto.com/u_13520184/6115610