¿Cómo puedo almacenar un HashMap <Integer, String> en android usando preferencias compartidas?
He creado un HashMap de la siguiente manera:
HashMap<Integer, String> buttons = new HashMap<Integer, String>();
- ¿Se eliminan las preferencias compartidas asociadas con la aplicación cuando se quita la aplicación?
- Cómo cambiar el valor de preferencia compartida de Android de String a Int
- ¿Cómo forzar a PreferenceActivity a manejar mis SharedPreferences?
- Cómo analizar ANR en sharedPreferences
- Android ArrayList de objetos personalizados - Guardar en SharedPreferences - Serializable?
Necesito esto para permanecer en este formato, sin embargo, cada respuesta a esta solución que he visto sólo funciona para HashMap<String, String>
Gracias
- SharedPreferences no se eliminan en la aplicación de desinstalación de usuario
- Hacer que una actividad aparezca sólo una vez, cuando se inicia la aplicación
- Preferencias compartidas vs base de datos
- ¿Pueden las preferencias compartidas ser privadas?
- ¿Qué es un reemplazo de MODE_WORLD_READABLE SharedPreferences obsoleto en Android?
- Convertir ArrayList con Gson a String
- Cómo utilizar los datos almacenados en las preferencias compartidas de la clase que no sea de actividad
- ¿Es buena idea usar las preferencias compartidas de Android para almacenar grandes cantidades de datos?
He encontrado una manera al final 🙂
Acabo de cambiar el HashMap tuve que formatear y luego hizo lo siguiente para guardar el contenido:
SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, 0).edit(); for( Entry entry : backUpCurency_values.entrySet() ) editor.putString( entry.getKey(), entry.getValue() ); editor.commit();
y lo siguiente para recuperar el HashpMap:
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0); for( Entry entry : prefs.getAll().entrySet() ) backUpCurency_values.put( entry.getKey(), entry.getValue().toString() );
No hay soporte para cualquier HashMap
en SharedPreferences
. Puedes tratar un SharedPreferences
completo como un poco como un HashMap
, pero no es un HashMap
, y no puedes almacenar un HashMap
en una preferencia individual.
Le invitamos a convertir su HashMap
en una String
que podría almacenarse en un valor de SharedPreferences
, como convertirlo en JSON.
La conversión a JSON (como señala CommonsWare) es una opción. Alternativamente, la forma en que lo hice (ya que no estoy familiarizado con JSON) es serializarlo con la clase ObjectSerializer de Apache (que se encuentra aquí: ObjectSerializer.java ).
Simplemente llame al método de serialización cuando desee almacenarlo y deserializarlo cuando desee convertirlo en un Mapa.
- cómo obtener todos los archivos de audio de la tarjeta sd Android
- Creación de un menú de mapa de Android para cambiar el tipo de mapa