将哈希映射保存到SharedPreferences中

时间:2016-08-29 10:41:14

标签: java android hashmap sharedpreferences

如何使用SharedPreference

中的以下格式在Android中保存和获取Hashmap
HashMap<String, List<String>> mChildMap = new HashMap<>();    

3 个答案:

答案 0 :(得分:2)

最简单的方法是使用Google的Gson将HashMap保存为json。 使用getter和setter方法为HashMap创建一个Wrapper类。 请参阅以下答案。

https://stackoverflow.com/a/11931812/5425930

答案 1 :(得分:2)

将HashMap插入SharedPreference的功能

function foo(a, callback) {
    console.log(a);
    return callback(a);
}

function bar(a) {
    return a;
}

console.log(foo(3, bar));

从SharedPreference

读取hashMap的函数
private void insertToSP(HashMap<String, List<String>> jsonMap) {
  String jsonString = new Gson().toJson(jsonMap);
  SharedPreferences sharedPreferences = getSharedPreferences("HashMap", MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putString("map", jsonString);
  editor.apply();
}

在gradle中添加此依赖项

private HashMap<String, List<String>> readFromSP(){
   SharedPreferences sharedPreferences = getSharedPreferences("HashMap", MODE_PRIVATE);
   String defValue = new Gson().toJson(new HashMap<String, List<String>>());
   String json=sharedPreferences.getString("map",defValue);
   TypeToken<HashMap<String,List<String>>> token = new TypeToken<HashMap<String,List<String>>>() {};
   HashMap<String,List<String>> retrievedMap=new Gson().fromJson(json,token.getType());
   return retrievedMap;
}

答案 2 :(得分:1)

您可以将Hashmap转换为带有Gson库的json,并将其作为String。像这样:

String converted = new Gson().toJson(myMap);
SharedPreferences sharedPreferences = getSharedPreferences("mySharedName", Context.MODE_PRIVATE);
sharedPreferences.edit().putString("key",converted).commit();