Android SharedPreferences保存LIST

平时我们碰到的大多数是保护用户名,密码这些数据,数量比较少,而保存ArrayList至SharedPreferences 比较少,下面我们来看看如何保存的。

  1. ArrayList中每个元素为String:
List<String> environmentList = new ArrayList<String>();
SharedPreferences.Editor editor = getSharedPreferences("ReasonDataList", MODE_PRIVATE).edit();
editor.putInt("ReasonNums", environmentList.size());
for (int i = 0; i < environmentList.size(); i++)
{
    editor.putString("item_"+i, environmentList.get(i));
}
editor.commit();

对应的取出操作为

List<String> environmentList = new ArrayList<String>();
SharedPreferences preferDataList = getSharedPreferences("ReasonDataList", MODE_PRIVATE);
int environNums = preferDataList.getInt("ReasonNums", 0);
for (int i = 0; i < environNums; i++) 
{
    String environItem = preferDataList.getString("item_"+i, null);
    environmentList.add(environItem);
}

2.list的每个元素为自定义对象
首先将自定义对象序列化

public class DemoBean implements Serializable {
    private double x;
    private double y;
    private String name;

    public double getX() {
        return x;
    }
    public void setX(double x) {
        this.x = x;
    }
    public double getY() {
        return y;
    }
    public void setY(double y) {
        this.y = y;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

其次,将list转为json,即可保存到SharedPreferences中

List<DemoBean > bean= new ArrayList<DemoBean >();
SharedPreferences.Editor editor = getSharedPreferences("DemoBeansList", MODE_PRIVATE).edit();
Gson gson = new Gson();
String json = gson.toJson(bean);
Log.d(TAG, "saved json is "+ json);
editor.putString("demoBeanJson", json);
editor.commit();

对应的取出操作为:

SharedPreferences preferences = getSharedPreferences("DemoBeansList", MODE_PRIVATE);
String json = preferences.getString("demoBeanJson", null);
if (json != null)
{
    Gson gson = new Gson();
    Type type = new TypeToken<List<CoordinateAlterSample>>(){}.getType();
    List<DemoBean > alterSamples = new ArrayList<DemoBean >();
    alterSamples = gson.fromJson(json, type);
    for(int i = 0; i < alterSamples.size(); i++)
    {
        Log.d(TAG, alterSamples.get(i).getName()+":" + alterSamples.get(i).getX() + "," + alterSamples.get(i).getY());
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,251评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,240评论 18 399
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 4,874评论 0 16
  • 01. 在连着很长一段时间读书后,我有意识地放慢了阅读的脚步。最近一两个月,我看的书少了,写的东西更少,学习的速度...
    淡之阅读 3,865评论 13 31
  • 今天和大家分享的书籍是,《超级时间整理术,每天多出一小时》 001 当我们总说时间不够用的时候,先从自身寻找问题。...
    爱冒险的兔子酱阅读 1,855评论 0 0

友情链接更多精彩内容