簡體   English   中英

如何在 android 中保存 HashMap 的列表?

[英]How to save List Of HashMap in android?

我有一個字符串 hashmap

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

代碼的用途

實際上我正在將此列表傳遞給 recyclerViewAdapeter 並從那里在 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<>();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM