如何在Android中使用共享首选项存储HashMap <integer,string =“”>?</integer,>

时间:2013-02-13 00:44:56

标签: android hashmap sharedpreferences

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

HashMap<Integer, String> buttons = new HashMap<Integer, String>();

我需要保留这种格式,但是我看到的这个解决方案的每个答案都只适用于HashMap<String, String>

由于

3 个答案:

答案 0 :(得分:14)

嘿,我最终找到了一条路:)

我刚刚更改了我必须格式化的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() );

答案 1 :(得分:5)

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

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

答案 2 :(得分:0)

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

如果要存储它,只需调用serialize方法,并在想要将其重新转换为Map时反序列化。