Necesitamos obtener objetos de usuario en muchos lugares, que contienen muchos campos. Después de iniciar sesión, quiero guardar / almacenar estos objetos de usuario. ¿Cómo podemos implementar este tipo de escenario?
No puedo almacenarlo así:
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);
android
sharedpreferences
Piraba
fuente
fuente
Respuestas:
Puede usar gson.jar para almacenar objetos de clase en SharedPreferences . Puedes descargar este jar de google-gson
O agregue la dependencia GSON en su archivo Gradle:
Crear una preferencia compartida:
Ahorrar:
Para recuperar:
fuente
Para agregar a la respuesta de @ MuhammadAamirALi, puede usar Gson para guardar y recuperar una lista de objetos
Guardar lista de objetos definidos por el usuario en SharedPreferences
Obtener una lista de objetos definidos por el usuario de SharedPreferences
fuente
Sé que este hilo es un poco viejo. Pero voy a publicar esto de todos modos esperando que pueda ayudar a alguien. Podemos almacenar campos de cualquier objeto a preferencia compartida serializando el objeto a String. Aquí lo he usado
GSON
para almacenar cualquier objeto con preferencia compartida.Guardar objeto en preferencia:
Recuperar objeto de preferencia:
Nota :
Recuerde agregar
compile 'com.google.code.gson:gson:2.6.2'
adependencies
su gradle.Ejemplo :
Actualizar:
Como @Sharp_Edge señaló en los comentarios, la solución anterior no funciona
List
.Una ligera modificación a la firma de
getSavedObjectFromPreference()
- deClass<GenericClass> classType
aType classType
hará que esta solución se generalice. Firma de función modificada,Por invocar,
¡Feliz codificación!
fuente
commit
lugar deapply
. Te puede ayudar.List<CustomClass>
¿cómo debo hacer eso?getSavedObjectFromPreference(context, "mPreference", "mObjectKey", SampleClass.class)
no aceptaList<CustomClass>.class
:(Mejor es hacer una
Constants
clase global para guardar claves o variables para buscar o guardar datos.Para guardar datos, llame a este método para guardar datos de todas partes.
Úselo para obtener datos.
y un método como este hará el truco
fuente
Prueba esta mejor manera:
PreferenceConnector.java
Escribe el valor:
Y obtenga valor utilizando:
fuente
return PreferenceManager.getDefaultSharedPreferences(context);
lugar dereturn context.getSharedPreferences(PREF_NAME, MODE);
No ha indicado qué hacer con el
prefsEditor
objeto después de esto, pero para conservar los datos de preferencia, también debe usar:fuente
Mira aquí, esto puede ayudarte:
https://github.com/AltasT/PreferenceVObjectFile/blob/master/PreferenceVObjectFile/src/com/altas/lib/PreferenceUtils.java
fuente
Otra forma de guardar y restaurar un objeto desde las preferencias compartidas de Android sin usar el formato Json
fuente
Puede guardar objetos en preferencias sin usar ninguna biblioteca, antes que nada, su clase de objeto debe implementar Serializable:
}
Luego, puede usar fácilmente estos dos métodos para convertir objetos en cadenas y cadenas en objetos:
Ahorrar:
Leer
fuente
Paso 1: Copie y pegue estas dos funciones en su archivo java.
Paso 2: para guardar el uso:
para recuperar el uso:
Puede establecer diferentes preferencias compartidas utilizando diferentes nombres clave como:
fuente
Si desea almacenar todo el Objeto que obtiene en respuesta, puede lograrlo haciendo algo como,
Primero cree un método que convierta su JSON en una cadena en su clase de utilidad como se muestra a continuación.
Luego, en la clase de preferencias compartidas, haga algo como,
y luego crea un método para getPreferences
Luego, simplemente llame al primer método cuando obtenga respuesta y al segundo cuando necesite obtener datos de las preferencias de compartir como
eso es todo.
Espero que te ayude.
Happy Coding();
fuente
Tuve problemas para usar la respuesta aceptada para acceder a los datos de preferencias compartidas en todas las actividades. En estos pasos, le da a getSharedPreferences un nombre para acceder a él.
Agregue la siguiente dependencia en el archivo build.gradel (Módulo: aplicación) en Gradle Scripts:
Ahorrar:
Para recuperar en una actividad diferente:
fuente
Espero que esto te ayude :)
fuente
Aquí hay una opinión sobre el uso de las propiedades delegadas de Kotlin que recogí desde aquí , pero que amplié y permite un mecanismo simple para obtener / establecer propiedades SharedPreference.
Para
String
,Int
,Long
,Float
oBoolean
, utiliza el getter estándar SharePreference (s) y setter (s). Sin embargo, para todas las demás clases de datos, utiliza GSON para serializar a aString
, para el configurador. Luego se deserializa al objeto de datos, para el captador.Similar a otras soluciones, esto requiere agregar GSON como dependencia en su archivo gradle:
Aquí hay un ejemplo de una clase de datos simple que nos gustaría poder guardar y almacenar en SharedPreferences:
Aquí está la clase que implementa los delegados de propiedad:
Nota: no debería necesitar actualizar nada en el
sealed class
. Las propiedades son delegadas el inmueble / SingletonUserPreferenceProperty
,NullableUserPreferenceProperty
yFirstTimeUser
.Para configurar un nuevo objeto de datos para guardar / obtener de SharedPreferences, ahora es tan fácil como agregar cuatro líneas:
Finalmente, puede leer / escribir valores en SharedPreferences simplemente usando la
by
palabra clave:fuente
Si su objeto es complejo, sugeriría serializarlo / XML / JSON y guardar esos contenidos en la tarjeta SD. Puede encontrar información adicional sobre cómo guardar en almacenamiento externo aquí: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
fuente
hay dos archivos resueltos todos sus problemas sobre preferencias compartidas
1) AppPersistence.java
2) AppPreference.java
ahora puedes guardar, eliminar u obtener,
-salvar
-eliminar
-obtener
fuente
Almacenar datos en SharedPreference
fuente
Mi clase de utilidades para guardar lista en
SharedPreferences
Utilizando
.
Código completo de mis utilidades // verificar usando el ejemplo en Código de actividad
fuente
Biblioteca jackson agregada a gradle:
Mi clase de prueba:
Objeto Java para JSON:
Almacénelo en preferencias compartidas:
Restaurarlo desde las preferencias compartidas:
fuente