【问题标题】:Android save hashmap to SharedPreferencesAndroid 将 hashmap 保存到 SharedPreferences
【发布时间】:2016-06-15 00:02:24
【问题描述】:

我有一个带有复选框的 Recyclerview,单击该复选框时会保存复选框的状态及其在哈希图中 Recyclerview 布局中的位置。我想将哈希图发送到另一个活动。是否可以将哈希图保存到 SharedPreferences。

代码:

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();

                        }

【问题讨论】:

    标签: android hashmap sharedpreferences


    【解决方案1】:

    您可以将您的地图转换为JSON,并在必要时从String 读回。

    以下是将其转换为 JSON 的方法: How to convert HashMap to json Array in android?

    下面是如何将其解析回HashMapConvert a JSON String to a HashMap

    [编辑] 如果键不是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 中

    【讨论】:

    • 我检查了链接。据说键和值必须是字符串。但是在我的Hashmap中键是整数对象,值是布尔值
    【解决方案2】:
        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;
                                }
    

    最后您可以将您的 SharePreferences 转换为 HashMap。 String to HashMap JAVA

    【讨论】:

      猜你喜欢
      • 2016-06-23
      • 2019-05-28
      • 1970-01-01
      • 2011-10-26
      • 2021-07-04
      • 2012-05-30
      • 2020-11-28
      相关资源
      最近更新 更多