SharedPreferences存储多种类型

来源:互联网 发布:美国指数型基金数据 编辑:程序博客网 时间:2024/05/18 09:38

SharedPreferences轻量级存储

public class SharedManager {

String SHARE_NAME = "CUNCU";//文件名称

public static void saveUid(String uid) {
        SharedPreferences sharedPreferences = AppApplication.getInstance()
                .getSharedPreferences(SHARE_NAME, 0);
        Editor editor = sharedPreferences.edit();
        editor.putString("uid", uid);
        editor.commit();
    }

public static String getSavedUid() {
        SharedPreferences sharedPreferences = AppApplication.getInstance()
                .getSharedPreferences(SHARE_NAME, 0);
        return sharedPreferences.getString("uid", "");

    }

}

AppApplication.getInstance()就是我自己定义的继承application的类

基本大家都用过,SharedPreferences存储是通过SharedPreferences中的edittext编辑器设置键值来存储的

而edittext编辑器只能存储int、string、float、boolean、long类型,如果是其他类型呢,是不是就不能存储了?

比如double类型,是不是要转成string,获取的时候再转成double类型能,看着貌似可以,但是会有精度缺失

后面就想到一个方式,就是json数据,因为json格式就是一个String,存进去拿出来还是json数据,是不会有改变的。

那么在存到SharedPreferences之前,先把数据转成json格式,存入SharedPreferences,获取后再转化成对应的类别,就能获取当中存的各种类型的值

json能传的数据格式都可以存储了。

一、通过建bean 

public class Bean {
    private double B;
    private double C;
    private String A;

    public double getB() {
        return B;
    }

    public void setB(double b) {
        B = b;
    }

    public double getC() {
        return C;
    }

    public void setC(double c) {
        C = c;
    }

    public String getA() {
        return A;
    }

    public void setA(String a) {
        A = a;
    }

}


//存储数据

double b=0.0;

double c=1.0;

String a="数据存储";

Bean bean=new Bean();

bean.setB(b);

bean.setC(c);

bean.setA(a);

//这里我通过Gson进行转化

Gson gson=new Gson();

String uid=gson.tojson(bean);

SharedManager.saveUid(uid);

//获取数据 转化

String uuid=SharedManager.getSavedUid();

Gson gson=new Gson();

Bean bean=gson.fromjson(uuid,Bean.class);

double bb=bean.getB();

double cc=bean.getC();

String aa=bean.getA();


二、比如Arraylist类型或者其他类似的比较单一的数据,不想通过建bean转化

//以ArrayList嵌套list为例

ArrayList<Stringt> list=new ArrayList<String>();

ArrayList<list> list2=new ArrayList<list>();

//这里我通过Gson进行转化存储

Gson gson=new Gson();

String uid=gson.tojson(list2);

SharedManager.saveUid(uid);

//获取数据转换 这里和bean不同

String uuid=SharedManager.getSavedUid();

//类型要和之前的类型一致

ArrayList<Stringt> list=new ArrayList<String>();

Type Type = new TypeToken<ArrayList<list>>() {
        }.getType()

Gson gson=new Gson();

 ArrayList<list>  list2=gson.fromJson(uuid, Type);

0 0
原创粉丝点击