0

我想知道如何将自定义 ArrayList 保存到 Android 手机中。因为它习惯于在过滤器活动中使用它。我应该将这些信息保存在任何地方。

ArrayList<ListAdapterItemsSelected> mSelectedList = new ArrayList<ListAdapterItemsSelected>();

public class ListAdapterItemsSelected {
    public String  sText;
    public boolean bSelected;

    public String getsText() {
        return sText;
    }

    public void setsText(String sText) {
        this.sText = sText;
    }


    public boolean isbSelected() {
        return bSelected;
    }


    public void setbSelected(boolean bSelected) {
        this.bSelected = bSelected;
    }  

    public ListAdapterItemsSelected(String _text, boolean _selected) {
        sText = _text;
        bSelected = _selected;
    }
}
4

3 回答 3

4

使用 GSON

Gson gson = new Gson();

ArrayList<ListAdapterItemsSelected> mSelectedList = new ArrayList<ListAdapterItemsSelected>();
String jsonString = gson.toJson(mSelectedList);
SharedPreferences sp = context.getSharedPreferences("KEY", Context.MODE_PRIVATE);

//Save to SharedPreferences
sp.edit().putString("KEY", jsonString).commit();

//Get to SharedPreferences

//For default value, just to get no errors while getting no value from the SharedPreferences
String empty_list = gson.toJson(new ArrayList<ListAdapterItemsSelected>()); 

ArrayList<ListAdapterItemsSelected> mSelectedList = gson.fromJson(sp.getString("KEY", empty_list),
        new TypeToken<ArrayList<ListAdapterItemsSelected>>() {
        }.getType());
于 2015-10-01T03:01:24.517 回答
0

现在有通用的方法。您可以通过任何方法将其转换为字符串,例如使用 json 转换器或使用第三方库,例如:

hawk:适用于 Android 的安全简单键值存储

于 2015-10-01T02:58:19.340 回答
0

SharedPreferences不适合这种事情。如果不使用一些讨厌的技巧,您甚至无法轻松存储 a Listof Strings,更不用说 a Listof 自定义对象了。就我个人而言,我会将 存储List为内部存储中的文件,首先使用 aDataOutputStream写入 的大小ArrayList,然后是对象的一系列booleanString值。

于 2015-10-01T03:06:39.267 回答