Guardar el mapa ArrayList of Hash
En mi aplicación quiero guardar datos en savedInstanceState()
. Quiero guardar ArrayList<HashMap<String,String>>
. Y hasta ahora no puedo hacer eso. Aquí está mi código que me está molestando
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelableArrayList("places", (ArrayList<? extends Parcelable>) places); }
Método restore ()
private void restore(Bundle savedInstanceState) { // TODO Auto-generated method stub //What should i do here! i have try many things but none of them is helping }
Dado que ArrayList
, HashMap
y String
son Serializable
, puede utilizar Bundle.putSerializable
y Bundle.getSerializable
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("places", places); } private void restore(Bundle savedInstanceState) { if (savedInstanceState != null) { places = (ArrayList<HashMap<String,String>>) savedInstanceState.getSerializable("places"); } }
Además, asegúrese de que está llamando a restore
from onRestoreInstanceState
o onCreate
Digamos que tengas
ArrayList< HashMap< String,String>> arr = new ArrayList< HashMap< String,String>> (); @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelableArrayList("places", (ArrayList< ? extends Parcelable>) arr); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { ArrayList<HashMap<String,String>> a = (ArrayList<HashMap<String,String>>)savedInstanceState.get("places"); /*for(int i =0; i< a.size(); i++){ HashMap<String,String> map = a.get(i); for(String s : map.keySet()){ Log.d("log",s+" :: "+map.get(s)); } }*/ }