3

我想在内部存储中存储一些数据,如键和值对。所以我使用 HashMap 来存储键值对。但是我没有足够的解决方案来存储和检索这个 HashMap 到 sharedpreferences 中。请给我一些解决方案。

我把我的代码放在下面:

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

并从 Sharedpreferences 中检索数据:

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中。我的主要目的是将数据存储和检索到共享首选项中,并将数据显示到列表视图中。

提前致谢。

4

3 回答 3

0

像您所描述的那样进行操作有特殊之处,这就是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]));
}
于 2015-03-10T06:08:04.257 回答
0

您可以使用 json 解决方案。

例如:

**JSON**

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

用某个键存储整个 json 字符串并使用相同的键进行检索。只需要解析/创建 JSON。您可以使用 GSON lib 创建/解析 JSON

于 2015-03-10T05:50:45.600 回答
0

将 HashMap 存储在 Preferences 中的最简单方法是将其转换为字符串并存储。

在另一边,将字符串转换为 HashMap 并享受。

要将字符串转换为 HashMap,反之亦然,请检查链接。

于 2015-03-10T05:10:39.573 回答