【问题标题】:Store Custom Arraylist in SharedPreferences and get it from there?将自定义 Arraylist 存储在 SharedPreferences 中并从那里获取?
【发布时间】:2016-08-11 09:33:41
【问题描述】:

我有一个实现 Parcelable 的自定义模型类。它包含 3 个字符串,即 String id_url,position,type 。完整的课程是:

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];
    }
};
}

创建此模型的ArrayList 后,我需要将一些值传递给arraylist。到这里为止,它工作正常。但是我如何将它存储到 sharedpreferences 并在之后获取它。 (主要动机是正确获取各自的值)

【问题讨论】:

标签: java android parsing functional-programming sharedpreferences


【解决方案1】:

您可以使用 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);

要取回它,您可以使用:

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);

【讨论】:

  • 你能建议另一种不使用 gson 的方法吗?
  • 另一种方法是将 json 对象或 jsonarray 作为字符串保存到首选项中,并使用从首选项中获取 json 数组或 json 对象时创建的数据模型
【解决方案2】:

为此使用 gson 库。

ArrayList<Facebook_Images_Data> listData = new ArrayList<Facebook_Images_Data>(); 
Gson gson = new Gson();
String stringValue = gson.toJson(listData);
prefsEditor.putString("KEY",stringValue);

获取:

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

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 1970-01-01
    • 2018-07-31
    • 2015-02-13
    • 2013-09-11
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多