我有一个带有复选框的回收器视图,单击这些复选框时会保存复选框的状态及其在哈希图中回收视图布局中的位置。我想将哈希图发送到另一个活动。是否可以将哈希图保存到共享首选项。
法典:
if(checkBox.isChecked()){
boolean check=true;
clicked_position=getAdapterPosition();
i=new Integer(clicked_position);
hashMap.put(i, check);}
if(hashMap!=null){
SharedPreferences selectedplaces=context.getSharedPreferences("selectedplaces",Context.MODE_PRIVATE);
SharedPreferences.Editor editor=selectedplaces.edit();
}
您可以将地图转换为JSON
,并在必要时从String
读回地图。
以下是将其转换为 JSON 的方法:如何在安卓中将哈希图转换为 json 数组?
以下是将其解析回HashMap
的方法:将 JSON 字符串转换为哈希映射
[编辑] 如果键不是String
格式,也可以使用GSON
库轻松实现:
Map<Integer, Boolean> oldMap = new HashMap<>();
oldMap.put(1, true);
oldMap.put(2, false);
Type typeOfHashMap = new TypeToken<Map<Integer, Boolean>>() { }.getType();
Gson gson = new GsonBuilder().create();
String json = gson.toJson(oldMap, typeOfHashMap);
System.out.println(json);
Map<Integer, Boolean> newMap = gson.fromJson(json, typeOfHashMap);
System.out.println(newMap.get(1));
System.out.println(newMap.get(2));
只需将compile 'com.google.code.gson:gson:2.4'
添加到您的build.gradle
if(checkBox.isChecked()){
boolean check=true;
clicked_position=getAdapterPosition();
i=new Integer(clicked_position);
hashMap.put(i, check);}
if(hashMap!=null){
SharedPreferences selectedplaces=context.getSharedPreferences("selectedplaces",Context.MODE_PRIVATE);
SharedPreferences.Editor editor=selectedplaces.edit();
editor.put("key",hashMap.toString());
editor.commit;
}
最后,您可以将您的共享首选项转换为哈希映射。 字符串到哈希映射 JAVA