使用Gson从共享首选项中检索列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Gson从共享首选项中检索列表相关的知识,希望对你有一定的参考价值。

我首先尝试使用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;
      }
    }

我希望这个方法检索列表,例如当我做List it say Unknown class时。

怎么能做到这一点?

答案

像这样保存列表

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

希望这是你想要的!

以上是关于使用Gson从共享首选项中检索列表的主要内容,如果未能解决你的问题,请参考以下文章

如何从共享首选项中检索数组列表并将数组列表设置为 recyclerview

是否有任何解决方案可以从共享首选项中存储和检索对象列表?

在共享首选项中保存大型arraylists

共享首选项保存和检索数据

如何保存和获取存储在共享首选项中的包名称?

在共享首选项中存储和检索类对象