Nous devons obtenir des objets utilisateur à de nombreux endroits, qui contiennent de nombreux champs. Après la connexion, je souhaite enregistrer / stocker ces objets utilisateur. Comment mettre en œuvre ce genre de scénario?
Je ne peux pas le stocker comme ça:
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);
android
sharedpreferences
Piraba
la source
la source
Réponses:
Vous pouvez utiliser gson.jar pour stocker des objets de classe dans SharedPreferences . Vous pouvez télécharger ce pot depuis google-gson
Ou ajoutez la dépendance GSON dans votre fichier Gradle:
Création d'une préférence partagée:
Sauver:
À récupérer:
la source
Pour ajouter à la réponse de @ MuhammadAamirALi, vous pouvez utiliser Gson pour enregistrer et récupérer une liste d'objets
Enregistrer la liste des objets définis par l'utilisateur dans SharedPreferences
Obtenir la liste des objets définis par l'utilisateur à partir de SharedPreferences
la source
Je sais que ce fil est un peu vieux. Mais je vais quand même poster ceci en espérant que cela pourrait aider quelqu'un. Nous pouvons stocker les champs de n'importe quel objet à préférence partagée en sérialisant l'objet en chaîne. Ici, j'ai utilisé
GSON
pour stocker n'importe quel objet à préférence partagée.Enregistrer l'objet dans la préférence:
Récupérer l'objet de préférence:
Remarque :
N'oubliez pas d'ajouter
compile 'com.google.code.gson:gson:2.6.2'
àdependencies
votre gradle.Exemple :
Mettre à jour:
Comme @Sharp_Edge l'a souligné dans les commentaires, la solution ci-dessus ne fonctionne pas
List
.Une légère modification de la signature de
getSavedObjectFromPreference()
- deClass<GenericClass> classType
àType classType
rendra cette solution généralisée. Signature de fonction modifiée,Pour invoquer,
Codage heureux !
la source
commit
place deapply
. Cela pourrait vous aider.List<CustomClass>
comment dois-je faire?getSavedObjectFromPreference(context, "mPreference", "mObjectKey", SampleClass.class)
n'accepte pasList<CustomClass>.class
:(Mieux vaut créer une
Constants
classe globale pour enregistrer des clés ou des variables pour récupérer ou enregistrer des données.Pour enregistrer des données, appelez cette méthode pour enregistrer des données de partout.
Utilisez-le pour obtenir des données.
et une méthode quelque chose comme ça fera l'affaire
la source
Essayez cette meilleure façon:
PreferenceConnector.java
Écrivez la valeur:
Et obtenez de la valeur en utilisant:
la source
return PreferenceManager.getDefaultSharedPreferences(context);
place dereturn context.getSharedPreferences(PREF_NAME, MODE);
Vous n'avez pas indiqué ce que vous faites avec l'
prefsEditor
objet après cela, mais pour conserver les données de préférence, vous devez également utiliser:la source
Voir ici, cela peut vous aider:
https://github.com/AltasT/PreferenceVObjectFile/blob/master/PreferenceVObjectFile/src/com/altas/lib/PreferenceUtils.java
la source
Une autre façon d'enregistrer et de restaurer un objet à partir de préférences partagées Android sans utiliser le format Json
la source
Vous pouvez enregistrer un objet dans les préférences sans utiliser de bibliothèque, tout d'abord votre classe d'objet doit implémenter Serializable:
}
Ensuite, vous pouvez facilement utiliser ces deux méthodes pour convertir un objet en chaîne et une chaîne en objet:
Sauver:
Lire
la source
Étape 1: Copiez collez ces deux fonctions dans votre fichier java.
Étape 2: pour économiser l'utilisation:
pour récupérer l'utilisation:
Vous pouvez définir différentes préférences partagées en utilisant différents noms de clés tels que:
la source
Si vous voulez stocker tout l'objet que vous obtenez en réponse, cela peut être réalisé en faisant quelque chose comme,
Créez d'abord une méthode qui convertit votre JSON en chaîne dans votre classe util comme ci-dessous.
Dans la classe des préférences partagées, faites quelque chose comme:
puis créez une méthode pour getPreferences
Ensuite, appelez simplement la première méthode lorsque vous obtenez une réponse et la seconde lorsque vous devez obtenir des données à partir des préférences de partage comme
c'est tout.
J'espère que cela vous aidera.
Happy Coding();
la source
J'ai eu du mal à utiliser la réponse acceptée pour accéder aux données de préférence partagée dans toutes les activités. Dans ces étapes, vous donnez à getSharedPreferences un nom pour y accéder.
Ajoutez la dépendance suivante dans le fichier build.gradel (Module: app) sous Gradle Scripts:
Sauver:
Pour récupérer dans une autre activité:
la source
j'espère que cela vous aide :)
la source
Voici un aperçu de l' utilisation des propriétés déléguées Kotlin que j'ai récupérées ici , mais développées et permet un mécanisme simple pour obtenir / définir les propriétés SharedPreference.
Pour
String
,Int
,Long
,Float
ouBoolean
, il utilise le getter standard SharePreference (s) et poseur (s). Cependant, pour toutes les autres classes de données, il utilise GSON pour sérialiser en unString
, pour le setter. Désérialise ensuite l'objet de données, pour le getter.Semblable à d'autres solutions, cela nécessite d'ajouter GSON en tant que dépendance dans votre fichier de notes:
Voici un exemple d'une classe de données simple que nous souhaiterions pouvoir enregistrer et stocker dans SharedPreferences:
Voici la seule classe qui implémente les délégués de propriété:
Remarque: vous ne devriez pas avoir besoin de mettre à jour quoi que ce soit dans le
sealed class
. Les propriétés délégués sont l'objet / singletonsUserPreferenceProperty
,NullableUserPreferenceProperty
etFirstTimeUser
.Pour configurer un nouvel objet de données pour enregistrer / obtenir à partir de SharedPreferences, il est maintenant aussi simple que d'ajouter quatre lignes:
Enfin, vous pouvez lire / écrire des valeurs dans SharedPreferences en utilisant simplement le
by
mot clé:la source
Si votre objet est complexe, je suggère de le sérialiser / XML / JSON et d'enregistrer ce contenu sur la carte SD. Vous pouvez trouver des informations supplémentaires sur la façon de sauvegarder sur un stockage externe ici: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
la source
il y a deux fichiers résolus tout votre problème sur les préférences partagées
1) AppPersistence.java
2) AppPreference.java
vous pouvez maintenant enregistrer, supprimer ou faire comme,
-enregistrer
-retirer
-avoir
la source
Stocker des données dans SharedPreference
la source
Ma classe d'utilitaires pour enregistrer la liste
SharedPreferences
En utilisant
.
Code complet de mes utils // vérifier en utilisant l'exemple dans le code d'activité
la source
Ajout de la bibliothèque jackson pour gradle:
Ma classe de test:
Objet Java en JSON:
Stockez-le dans les préférences partagées:
Restaurez-le à partir des préférences partagées:
la source