首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自定义对象的Android ArrayList -保存到SharedPreferences -可序列化?

自定义对象的Android ArrayList -保存到SharedPreferences -可序列化?
EN

Stack Overflow用户
提问于 2013-02-20 21:38:03
回答 4查看 91.2K关注 0票数 79

我有一个对象的ArrayList。该对象包含类型'Bitmap‘和'String’,然后只包含这两种类型的getter和setter。首先,位图是可序列化的吗?

我该如何将其序列化以将其存储在SharedPreferences中?我看到许多人问了类似的问题,但似乎没有人给出一个好的答案。如果可能的话,我更喜欢一些代码示例。

如果位图是不可序列化的,那么我该如何存储这个ArrayList?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-22 04:48:50

可以,您可以将复合对象保存在共享首选项中。比方说..

代码语言:javascript
复制
 Student mStudentObject = new Student();
 SharedPreferences appSharedPrefs = PreferenceManager
             .getDefaultSharedPreferences(this.getApplicationContext());
 Editor prefsEditor = appSharedPrefs.edit();
 Gson gson = new Gson();
 String json = gson.toJson(mStudentObject);
 prefsEditor.putString("MyObject", json);
 prefsEditor.commit(); 

..and现在,您可以检索对象,如下所示:

代码语言:javascript
复制
 SharedPreferences appSharedPrefs = PreferenceManager
             .getDefaultSharedPreferences(this.getApplicationContext());
 Gson gson = new Gson();
 String json = appSharedPrefs.getString("MyObject", "");
 Student mStudentObject = gson.fromJson(json, Student.class);

有关更多信息,请单击here.

如果您想要返回任何类型的对象(例如Student )的ArrayList,则使用:

代码语言:javascript
复制
Type type = new TypeToken<List<Student>>(){}.getType();
List<Student> students = gson.fromJson(json, type);
票数 148
EN

Stack Overflow用户

发布于 2014-02-25 23:56:08

上面的答案是有效的,但不适用于list:

要保存对象列表,请执行以下操作:

代码语言:javascript
复制
List<Cars> cars= new ArrayList<Cars>();
    cars.add(a);
    cars.add(b);
    cars.add(c);
    cars.add(d);

    gson = new Gson();
    String jsonCars = gson.toJson(cars);
    Log.d("TAG","jsonCars = " + jsonCars);

读取json对象:

代码语言:javascript
复制
Type type = new TypeToken<List<Cars>>(){}.getType();
List<Cars> carsList = gson.fromJson(jsonCars, type);
票数 123
EN

Stack Overflow用户

发布于 2016-10-25 18:09:57

对我来说,它是这样工作的:

将值放入SharedPreferances:

代码语言:javascript
复制
String key = "Key";
ArrayList<ModelClass> ModelArrayList=new ArrayList();

SharedPreferences shref;
SharedPreferences.Editor editor;
shref = context.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

Gson gson = new Gson();
String json = gson.toJson(ModelArrayList);

editor = shref.edit();
editor.remove(key).commit();
editor.putString(key, json);
editor.commit();

要从SharedPreferances获取值:

代码语言:javascript
复制
Gson gson = new Gson();
String response=shref.getString(key , "");
ArrayList<ModelClass> lstArrayList = gson.fromJson(response, 
    new TypeToken<List<ModelClass>>(){}.getType());
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14981233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档