2016-03-02 97 views
0

我有一個Recyclerview,它有一個複選框,當點擊時,複選框的狀態以及它們在HashMap中Recyclerview佈局中的位置保存。我想把HashMap發送到另一個Activity.Is可以保存HashMap到SharedPreferences。Android將hashmap保存到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(); 

         } 

回答

2

您可以將地圖轉換爲JSON並在必要時從String讀取它。

這裏是如何將其轉換爲JSON: How to convert HashMap to json Array in android?

這裏是如何解析回HashMapConvert a JSON String to a HashMap

[編輯]如果鍵String格式的不是這個也可以

 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'到您的構建:很容易與GSON庫實現.gradle

+0

我檢查了鏈接。據說key和value必須是string.But鍵是Integer對象,value是布爾值,在我的Hashmap中 – jobin

0
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

相關問題