【发布时间】:2013-01-28 11:18:13
【问题描述】:
我通过以下方式创建了一个 HashMap:
HashMap<Integer, String> buttons = new HashMap<Integer, String>();
我需要保持这种格式,但是我看到的这个解决方案的每个答案都只适用于HashMap<String, String>
谢谢
【问题讨论】:
标签: android hashmap sharedpreferences
我通过以下方式创建了一个 HashMap:
HashMap<Integer, String> buttons = new HashMap<Integer, String>();
我需要保持这种格式,但是我看到的这个解决方案的每个答案都只适用于HashMap<String, String>
谢谢
【问题讨论】:
标签: android hashmap sharedpreferences
嘿,我终于找到了一个方法:)
我刚刚更改了必须格式化的 HashMap,然后执行以下操作来保存内容:
SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, 0).edit();
for( Entry entry : backUpCurency_values.entrySet() )
editor.putString( entry.getKey(), entry.getValue() );
editor.commit();
以及以下检索HashpMap:
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
for( Entry entry : prefs.getAll().entrySet() )
backUpCurency_values.put( entry.getKey(), entry.getValue().toString() );
【讨论】:
editor.putStringSet(...) 和prefs.getStringSet(...)。
将其转换为 JSON(正如 CommonsWare 指出的那样)是一种选择。或者,我这样做的方式(因为我不熟悉 JSON)是使用 Apache 的 ObjectSerializer 类对其进行序列化(可在此处找到:ObjectSerializer.java)。
当你想存储它时只需调用 serialize 方法,当你想把它转回 Map 时只需反序列化。
【讨论】:
不支持SharedPreferences 中的任何HashMap。您可以将整个SharedPreferences 视为有点像HashMap,但它不是HashMap,并且您不能将HashMap 存储在个人偏好中。
欢迎您将HashMap 转换为String,该String 可以存储在SharedPreferences 值中,例如将其转换为JSON。
【讨论】: