簡體   English   中英

Android:如何在sharedpreferences中存儲和檢索Hashmap數據?

[英]Android:how to store and retrieve Hashmap data in sharedpreferences?

我想在內部存儲中存儲鍵和值對等一些數據。 所以我使用HashMap來存儲密鑰,值對。但是我沒有足夠的解決方案來存儲和檢索這個HashMap到共享偏好中。 請給我一些解決方案。

我把我的代碼放在下面:

HashMap<String, String> MapListMesasges = new HashMap<String, String>();
MapListMesasges.put(FromName, message.getBody());
preferences = mActivity.getSharedPreferences(
                                SharePreference_messages_history_name,
                                Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = preferences.edit();
                        for (Entry<String, String> entry : MapListMesasges
                                .entrySet()) {
                            editor.putString(entry.getKey(), entry.getValue());
                        }
                        editor.commit();

並從Sharedprefernces檢索數據:

preferences = mActivity.getSharedPreferences(
                SharePreference_messages_history_name, Context.MODE_PRIVATE);
        for (Entry<String, ?> entry : preferences.getAll().entrySet()) {
            MapListMesasges.put(entry.getKey(), entry.getValue().toString());
        }

我還將在適配器中存儲hashmap並設置為listview。 我的主要目的是將數據存儲和檢索到共享偏好中,並將數據顯示到listview中。

提前致謝。

在Preferences中存儲HashMap的最簡單方法是將其轉換為字符串並存儲它。

在Otherside獲取該字符串將其轉換為HashMap並享受。

要將字符串轉換為HashMap,反之亦然,請檢查鏈接。

您可以使用json進行解決方案。

例如:

**JSON**

    {
     [
      "name1","message1",
      "name2","message2"
     ]
    }

使用一些密鑰存儲整個json字符串並使用相同的密鑰進行檢索。 只需要解析/創建JSON。 您可以使用GSON lib進行JSON創建/解析

像你所描述的那樣進行操作是特別的,這就是SQLite 但是如果你真的想將它們存儲在SharedPreferences中,你就可以做到。 您的解決方案幾乎可行 您只需要存儲密鑰。

StringBuilder b = new StringBuilder();
for (Entry<String, String> entry : MapListMesasges.entrySet()) {
      editor.putString(entry.getKey(), entry.getValue());
      if(b.length() != 0){
           b.append(",");
      }
      b.append(entry.getKey());
 }
editor.putString("KEY_FOR_PREF_KEYS",b.toString());

並檢索數據使用此

String[] keys = preferences.getString("KEY_FOR_PREF_KEYS","").split(",");
for (int i = 0; i < keys.length; i++) {
    MapListMesasges.put(keys[i], preferences.getString(keys[i]));
}

暫無
暫無

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

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