【问题标题】:How can I store a HashMap <Integer, String> in android using shared preferences?如何使用共享首选项在 android 中存储 HashMap <Integer, String>?
【发布时间】:2013-01-28 11:18:13
【问题描述】:

我通过以下方式创建了一个 HashMap:

HashMap&lt;Integer, String&gt; buttons = new HashMap&lt;Integer, String&gt;();

我需要保持这种格式,但是我看到的这个解决方案的每个答案都只适用于HashMap&lt;String, String&gt;

谢谢

【问题讨论】:

标签: android hashmap sharedpreferences


【解决方案1】:

嘿,我终于找到了一个方法:)

我刚刚更改了必须格式化的 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(...)
【解决方案2】:

将其转换为 JSON(正如 CommonsWare 指出的那样)是一种选择。或者,我这样做的方式(因为我不熟悉 JSON)是使用 Apache 的 ObjectSerializer 类对其进行序列化(可在此处找到:ObjectSerializer.java)。

当你想存储它时只需调用 serialize 方法,当你想把它转回 Map 时只需反序列化。

【讨论】:

    【解决方案3】:

    不支持SharedPreferences 中的任何HashMap。您可以将整个SharedPreferences 视为有点像HashMap,但它不是HashMap,并且您不能将HashMap 存储在个人偏好中。

    欢迎您将HashMap 转换为String,该String 可以存储在SharedPreferences 值中,例如将其转换为JSON。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2012-07-07
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多