¿Cómo puedo guardar un HashMap en Preferencias compartidas en Android?
android
sharedpreferences
jibysthomas
fuente
fuente
Respuestas:
No recomendaría escribir objetos complejos en SharedPreference. En su lugar, usaría
ObjectOutputStream
para escribirlo en la memoria interna.fuente
Yo uso
Gson
para convertirHashMap
aString
y luego guardarlo paraSharedPrefs
fuente
He escrito un código simple para guardar el mapa de preferencia y cargar el mapa de preferencia. No se requieren funciones GSON o Jackson. Acabo de usar un mapa que tiene String como clave y Boolean como valor.
fuente
getApplicationContext
desde una clase sencilla?fuente
Como resultado de la respuesta de Vinoj John Hosan, modifiqué la respuesta para permitir inserciones más genéricas, basadas en la clave de los datos, en lugar de una única clave como
"My_map"
.En mi implementación,
MyApp
es miApplication
clase de invalidación yMyApp.getInstance()
actúa para devolver elcontext
.fuente
Context
instancia desde una biblioteca. Consulte esta otra pregunta de SO: ¿Es posible obtener el contexto de la aplicación en un proyecto de biblioteca de Android?En su lugar, podría intentar usar JSON.
Para ahorrar
Por conseguir
fuente
fuente
Usando PowerPreference .
Guardar datos
Leer datos
fuente
mapa -> cadena
cadena -> mapa
fuente
Puede usar esto en un archivo de preferencias compartido dedicado (fuente: https://developer.android.com/reference/android/content/SharedPreferences.html ):
fuente
La forma perezosa: almacenar cada clave directamente en SharedPreferences
Para el caso de uso limitado en el que su mapa solo va a tener no más de unas pocas docenas de elementos, puede aprovechar el hecho de que SharedPreferences funciona de manera muy similar a un mapa y simplemente almacenar cada entrada bajo su propia clave:
Almacenamiento del mapa
Leyendo claves del mapa
En caso de que utilice un nombre de preferencia personalizado (es decir
context.getSharedPreferences("myMegaMap")
), también puede obtener todas las claves conprefs.getAll()
fuente
Sé que es un poco tarde, pero espero que esto pueda ser útil para cualquiera que lea ...
entonces lo que hago es
1) Cree HashMapa y agregue datos como: -
2) Escríbalo para compartir el editor de preferencias como: -
3) Leer datos como: - en una nueva clase donde desea que se lean
fuente