example android object arraylist sharedpreferences persistent-storage

android - example - ¿Cómo puedo almacenar una ArrayList<HashMap<String, String>> en SharedPreferences?



gson android example (1)

Puede convertir su colección en json y almacenarla en preferencia compartida. Siempre que necesite obtener la información, solo obtenga la cadena y conviértala de nuevo a su colección.

//converting the collection into a JSON JSONArray result= new JSONArray(collection); SharedPreferences pref = getApplicationContext().getSharedPreferences(PREF_NAME, 0); //Storing the string in pref file SharedPreferences.Editor prefEditor = pref.edit(); prefEditor.putString(KEY, result.toString()); prefEditor.commit(); //Getting the JSON from pref String storedCollection = pref.getString(KEY, null); //Parse the string to populate your collection. ArrayList<HashMap<String, String>> collection = new ArrayList<HashMap<String, String>>(); try { JSONArray array = new JSONArray(storedCollection); HashMap<String, String> item = null; for(int i =0; i<array.length(); i++){ String obj = (String) array.get(i); JSONObject ary = new JSONObject(obj); Iterator<String> it = ary.keys(); item = new HashMap<String, String>(); while(it.hasNext()){ String key = it.next(); item.put(key, (String)ary.get(key)); } collection.add(item); } } catch (JSONException e) { Log.e(TAG, "while parsing", e); }

El JSON debe verse más o menos así:

[ "{test13=yeah3, test12=yeah2, test11=yeah1}", "{test23=yeah3, test22=yeah2, test21=yeah1}", "{test32=yeah2, test31=yeah1, test33=yeah3}" ]

Deseo almacenar una ArrayList que contenga Hashmap dentro de SharedPreferences. ¿Cómo puedo hacer esto?