使用Gson从共享首选项中检索List <object>

时间:2017-12-19 09:20:42

标签: android gson sharedpreferences

我试图将Gson用于共享首选项 首先,我使用此方法将对象列表转换为Json并将其保存在共享首选项中并正常工作

public Builder add(String key, List value) {
          Gson gson = new Gson();
          editor.putString(key, gson.toJson(value));
          return this;
        }

其次,我使用此方法检索列表

public <T> List<T> get(String key, Class<T> classType) {
      if (preferences.contains(key)) {
        Gson gson = new Gson();
        Type type = new TypeToken<List<classType>>() {
        }.getType();
        return gson.fromJson(get(key, ""), type);
      } else {
        return null;
      }
    }

我希望这个方法能够检索列表,例如当我将它列为“未知类”时。

如何做到这一点?

1 个答案:

答案 0 :(得分:-1)

像这样保存列表

public static void saveData(Context context, ArrayList<YOUR MODEL> model) {

        String s = new Gson().toJson(model);
        SharedPreferences preferences = context.getSharedPreferences(*your preference name*, Context.MODE_PRIVATE);
        preferences.edit().putString(*key*, s).apply();

    }

获取此类列表

public static ArrayList<YOUR MODEL> getData(Context context) {
    SharedPreferences preferences = context.getSharedPreferences(*your preference name*, Context.MODE_PRIVATE);
    String s = preferences.getString(*key*, "");
    Gson gson = new Gson();
    Type type = new TypeToken<ArrayList<YOUR MODEL>>() {
    }.getType();
    ArrayList<YOUR MODEL> list = gson.fromJson(s, type);
    return list;
}
希望这就是你想要的!