Java 在SharedReferences中存储自定义Arraylist并从中获取它?

Java 在SharedReferences中存储自定义Arraylist并从中获取它?,java,android,parsing,functional-programming,sharedpreferences,Java,Android,Parsing,Functional Programming,Sharedpreferences,我有一个实现Parcelable的自定义模型类。它包含3个字符串,即字符串id\u url、位置、类型。完整的课程是: public class Facebook_Images_Data implements Parcelable { String id_url; String position; String type; public Facebook_Images_Data( String id_url, String position, String type) {

我有一个实现Parcelable的自定义模型类。它包含3个字符串,即字符串id\u url、位置、类型。完整的课程是:

public class Facebook_Images_Data implements Parcelable {
String id_url;
String position;
String type;
public Facebook_Images_Data(
        String id_url, String position, String type) {

    this.id_url = id_url;
    this.position = position;
    this.type = type;
}

public String getId_url() {
    return id_url;
}

public void setId_url(String id_url) {
    this.id_url = id_url;
}

public String getPosition() {
    return position;
}

public void setPosition(String position) {
    this.position = position;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}


protected Facebook_Images_Data(Parcel in) {
    id_url = in.readString();
    position = in.readString();
    type = in.readString();
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(id_url);
    dest.writeString(position);
    dest.writeString(type);
}

@SuppressWarnings("unused")
public static final Parcelable.Creator<Facebook_Images_Data> CREATOR = new Parcelable.Creator<Facebook_Images_Data>() {
    @Override
    public Facebook_Images_Data createFromParcel(Parcel in) {
        return new Facebook_Images_Data(in);
    }

    @Override
    public Facebook_Images_Data[] newArray(int size) {
        return new Facebook_Images_Data[size];
    }
};
}
公共类Facebook\u图像\u数据实现可包裹{
字符串id_url;
串位置;
字符串类型;
公共Facebook_图片_数据(
字符串id(url、字符串位置、字符串类型){
this.id\u url=id\u url;
这个位置=位置;
this.type=type;
}
公共字符串getId_url(){
返回id\uurl;
}
公共void setId\u url(字符串id\u url){
this.id\u url=id\u url;
}
公共字符串getPosition(){
返回位置;
}
公共无效设置位置(字符串位置){
这个位置=位置;
}
公共字符串getType(){
返回类型;
}
公共void集合类型(字符串类型){
this.type=type;
}
受保护的Facebook_图像_数据(包裹中){
id_url=in.readString();
position=in.readString();
type=in.readString();
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目标写入目录(id\u url);
目的地记录(位置);
目的写入限制(类型);
}
@抑制警告(“未使用”)
public static final Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共Facebook_图像_数据创建自地块(地块中){
返回新的Facebook_图像_数据(in);
}
@凌驾
公共Facebook_图像_数据[]新数组(整数大小){
返回新的Facebook_图像_数据[大小];
}
};
}

创建此模型的
ArrayList
后,我需要将一些值传递给ArrayList。到目前为止,它工作得很好。但是我如何将其存储到SharedReferences中,然后获取它。(主要目的是正确获取各自的值)

您可以使用gson实现这一点:

List<Facebook_Images_Data> yourList = new ArrayList<Facebook_Images_Data>();
Gson gson = new Gson();
String valuesString = gson.toJson(yourList);
prefsEditor.putString("YOUR_KEY",valuesString);
List yourList=new ArrayList();
Gson Gson=新的Gson();
字符串值String=gson.toJson(您的列表);
putString(“您的_键”,valuesString);
要取回它,您可以使用:

Type arrayListType = new TypeToken<ArrayList<Facebook_Images_Data>>(){}.getType();
        Gson gson = new Gson();
        List<Facebook_Images_Data> yourList = gson.fromJson(sharedPreferences.getString(YOUR_KEY), arrayListType);
Type arrayListType=new-TypeToken(){}.getType();
Gson Gson=新的Gson();
List yourList=gson.fromJson(SharedReferences.getString(您的_键),arrayListType);

为此使用gson库

ArrayList<Facebook_Images_Data> listData = new ArrayList<Facebook_Images_Data>(); 
Gson gson = new Gson();
String stringValue = gson.toJson(listData);
prefsEditor.putString("KEY",stringValue);
ArrayList listData=new ArrayList();
Gson Gson=新的Gson();
字符串stringValue=gson.toJson(listData);
prefsEditor.putString(“键”,stringValue);
对于获取,请执行以下操作:

Gson gson = new Gson();
ArrayList<Facebook_Images_Data> restoredData = gson.fromJson(sharedPreference.getString("KEY"), new TypeToken<ArrayList<Facebook_Images_Data>>() {}.getType());
Gson-Gson=new-Gson();
ArrayList restoredData=gson.fromJson(sharedReference.getString(“KEY”),new-TypeToken(){}.getType());

您可以建议不使用gson的另一种方法吗?另一种方法可以是将json对象或jsonarray作为字符串保存到首选项中,并使用从首选项获取json数组或json对象时创建的数据模型。首选项可能与此重复