如何在 android 中保存 HashMap 列表?

How to save List Of HashMap in android?

我有一个字符串哈希图

HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("name", name);
hashMap.put("number", number);
hashMap.put("profileImage", image);

和一个 Hashmap 列表

List<HashMap<String, String>> recents = new ArrayList<>();
recents.add(hashMap);

现在我必须保存这个列表

我试过使用https://github.com/pilgr/Paper来保存这个列表

Paper.book().write("recents", recents);

但我无法取回列表

List<HashMap<String, String>> list = Paper.book().read("recents");
HashMap<String,String> hashMap = list.get(0);
String name = hashMap.get("name");
String number = hashMap.get("number");
String image = hashMap.get("profileImage");

代码的用途

实际上我正在将此列表传递给 recycelerViewAdapeter,然后在 OnBindViewHolder() 中获取所有 Hashmap 值并将其显示给用户

保存数据代码

Paper.init(this);
List<HashMap<String, String>> recents = new ArrayList<>();
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("name", name);
hashMap.put("number", number);
hashMap.put("profileImage", image);
recents.add(hashMap);
Paper.book().write("recents", contacts);

接收数据码

Paper.init(requireActivity());
recyclerView = view.findViewById(R.id.recyclerView);
List<HashMap<String, String>> list = Paper.book().read("recents");
Adapter = new Adapter(requireActivity(), list);
recyclerView.setAdapter(Adapter);

您可以使用 Gson 和 SharedPreferences 来做同样的事情。

implementation 'com.google.code.gson:gson:2.8.9'

示例:

private SharedPreferences sp;
private HashMap<String, Boolean> favs;
....
....
public void addFavourite(String wall_name) {
    favs = getFavourites();
    favs.put(wall_name, true);
    setFavourties();

}

public void removeFav(String wall_name) {
    favs = getFavourites();
    favs.put(wall_name, false);
    setFavourties();
}

private void setFavourties() {
    SharedPreferences.Editor pe = sp.edit();
    Gson gson = new Gson();
    String j = gson.toJson(favs);
    pe.putString("Favourites", j);
    pe.apply();
}


public HashMap<String, Boolean> getFavourites() {
    Gson gson = new Gson();
    String j = sp.getString("Favourites", null);
    if (j != null) {
        Type stringBooleanMap = new TypeToken<HashMap<String, Boolean>>() {
        }.getType();
        return gson.fromJson(j, stringBooleanMap);
    } else {
        return new HashMap<>();
    }
}