Android将对象存储到SharedPreferences中

来源:互联网 发布:wmv文件破解软件 编辑:程序博客网 时间:2024/06/05 09:57

如果需要将一个对象存储到Android SharedPreferences中,可以用到下面的办法:

以我的例子来说,我需要将一个标记账本的对象,其中元素为封面背景id(int)和账本名称(String)的对象存储至SharedPreferences。

下面是我封装改账本(Book)的Bean:

package beans;/** * Created by Chase on 2017/5/3. */public class BookBean {    public String bookName;    public int bookBgSrc;    public BookBean(){    }    public BookBean(String bookName,int bookBgSrc){        this.bookName = bookName;        this.bookBgSrc =bookBgSrc;    }    public String getBookName(){        return bookName;    }    public int getBookBgSrc(){        return bookBgSrc;    }    public void setBookBgSrc(int bookBgSrc) {        this.bookBgSrc = bookBgSrc;    }    public void setBookName(String bookName) {        this.bookName = bookName;    }}

下面编写两个方法用来存储和读取这个Bean:

public class SpUtils {    private static SharedPreferences sp;   /**     * 4.存储账本bookBean的list     */    public static void putBookBean(Context ctx, List<BookBean> bookList) {        if (sp == null) {            sp = ctx.getSharedPreferences("config", MODE_PRIVATE);        }        SharedPreferences.Editor editor = sp.edit();        Gson gson = new Gson();        String json = gson.toJson(bookList);        editor.putString(ConstantValue.BOOK_BEAN, json);        editor.commit();    }   }
   /**     * 读取账本bookBean的list     */    public static List<BookBean> getBookBean(Context ctx) {        if (sp == null) {            sp = ctx.getSharedPreferences("config", MODE_PRIVATE);        }        Gson gson = new Gson();        String json = sp.getString(ConstantValue.BOOK_BEAN, null);        Type type = new TypeToken<List<BookBean>>() {        }.getType();        List<BookBean> arrayList = gson.fromJson(json, type);        return arrayList;    }

上面读取的Type应该是java.long.reflect的。

参考一些可能出现的错误:
http://stackoverflow.com/questions/43774750/failed-to-deserialized-json-object

`

0 0
原创粉丝点击