Enregistrer la liste de tableaux à SharedPreferences
J'ai un ArrayList
avec des objets personnalisés. Chaque objet contient une variété de chaînes de caractères et des nombres. J'ai besoin de la matrice de rester dans les parages, même si l'utilisateur quitte l'activité et veut revenir à un moment plus tard, cependant je n'ai pas besoin de la matrice après l'application a été complètement fermé. J'ai d'économiser beaucoup d'autres objets à l'aide de la SharedPreferences
mais je ne peux pas trouver comment sauver mon tableau d'ensemble de cette façon. Est-ce possible? Peut-être SharedPreferences
n'est pas la façon d'aller à ce sujet? Est-il une méthode plus simple?
- Vous pouvez trouver la Réponse ici : stackoverflow.com/questions/14981233/...
- c'est l'exemple complet d'aller à l'adresse url stackoverflow.com/a/41137562/4344659
- Si quelqu'un est à la recherche de la solution, ce pourrait être la réponse que vous cherchez avec la pleine utilisation de l'exemple de kotlin. stackoverflow.com/a/56873719/3710341
Vous devez vous connecter pour publier un commentaire.
Après API 11 la
SharedPreferences Editor
accepterSets
. Vous pouvez convertir votre Liste dans unHashSet
ou quelque chose de similaire et de le stocker comme ça. Lorsque votre le lire, de le convertir enArrayList
, le tri si nécessaire et vous êtes bon pour aller.Vous pouvez également sérialiser vos
ArrayList
puis enregistrer/lire/à partir deSharedPreferences
. Ci-dessous est la solution:EDIT:
Ok, voici la solution pour sauver
ArrayList
comme objet sérialisé àSharedPreferences
puis le lire à partir de SharedPreferences.Parce que l'API prend en charge uniquement le stockage et la récupération de chaînes à/à partir de SharedPreferences (après API 11, sa plus simple), nous avons pour sérialiser et désérialiser l'objet ArrayList qui a la liste des tâches dans la chaîne.
Dans le
addTask()
méthode de la TaskManagerApplication classe, nous devons obtenir de l'instance de partage de préférence et ensuite le stocker sérialisé liste de tableaux à l'aide de laputString()
méthode:De même, nous avons à récupérer la liste des tâches à partir de la préférence dans le
onCreate()
méthode:Vous pouvez obtenir
ObjectSerializer
classe de Apache Pig projet ObjectSerializer.javaputStringSet
a été ajouté à l'API de 11. Actuelles de la plupart des programmeurs cible à la location API 8 (Froyo).ArrayList
d'objets personnalisés à un partage de la préférence? Cette solution ne semble pour uneArrayList
deString
type.scoreEditor
?L'aide de cet objet --> TinyDB--Android-Partagé-Préférences-Turbo très simple.
de mettre
pour obtenir
Mise à JOUR
Quelques exemples pratiques et de dépannage peut être trouvé ici: Android Partagé Préférence TinyDB putListObject frunction
tinydb.putList()
Regarder les exemples à la page liée.new TinyDB(getApplicationContext());
putList()
fonction. Je l'ai ditputList()
dans l'exemple de garder les choses simples, parce qu'il y a de nombreuses autres fonctions qui commencent à partir de l'expressionputList
dans TInyDB. Exemple putListString(), putListInt(), et bien d'autres.Économie
Array
dansSharedPreferences
:Chargement
Array
Données deSharedPreferences
ArrayList
enSharedPrefeneces
vous pouvez utilisermEdit1.clear()
pour éviter cela.Vous pouvez le convertir en
JSON String
et de stocker la chaîne de caractères dans laSharedPreferences
.Comme @nirav dit, la meilleure solution est de les stocker dans sharedPrefernces comme un json texte à l'aide de Gson classe utilitaire. Ci-dessous un exemple de code:
Hey les amis que j'ai eu la solution du problème ci-dessus sans l'aide de
Gson
de la bibliothèque. Ici je poste le code source.1.La déclaration de la Variable i.e
2.L'initialisation d'une Variable je.e
3.Conserver de la valeur à sharedPreference à l'aide de
packagesharedPreferences()
:4.Retrive valeur de sharedPreference à l'aide de
retriveSharedValue()
:J'espère qu'il sera utile pour vous...
String
s?Android SharedPreferances vous permettent d'enregistrer des types primitifs (Boolean, Float, Int, Long, String et StringSet qui est disponible depuis API11) en mémoire dans un fichier xml.
L'idée clé de toute solution serait de convertir les données à l'un de ces types primitifs.
Personnellement, j'aime à convertir les ma liste au format json et ensuite de l'enregistrer comme une Chaîne de caractères dans un SharedPreferences valeur.
Afin d'utiliser ma solution que vous aurez à ajouter Google Gson lib.
Dans gradle il suffit d'ajouter la dépendance suivant (veuillez utiliser la dernière version de google):
Enregistrer des données (où HttpParam est votre objet):
De récupérer les Données (où HttpParam est votre objet):
Vous pouvez également convertir la liste de tableaux dans une Chaîne et en enregistrer que dans la préférence
Vous pouvez enregistrer la liste de tableaux après la conversion à l'aide de la chaîne
convertToString
méthode et de récupérer la chaîne de caractères et la convertir en tableau à l'aide deconvertToArray
Après API 11, vous pouvez enregistrer directement à SharedPreferences bien !!! 🙂
C'est votre solution parfaite.. l'essayer,
J'ai lu toutes les réponses ci-dessus. C'est tout à fait correct, mais j'ai trouvé plus facile solution comme ci-dessous:
Économie de la Chaîne de Liste partagée de la préférence de l'>>
}
et pour obtenir la Liste de chaînes de Partagé, de préférence de l'>>
Ici
Constants.APP_PREFS
est le nom du fichier à ouvrir; ne peut pas contenir des séparateurs de chemin.meilleure façon est de transformer chaîne JSOn à l'aide de GSON et enregistrer cette chaîne de SharedPreference.
J'ai aussi utiliser ce moyen pour mettre en cache les réponses.
Vous pouvez consulter la serializeKey() et deserializeKey() les fonctions de FacebookSDK de SharedPreferencesTokenCache classe. Il convertit le supportedType dans l'objet JSON et de stocker la chaîne JSON dans SharedPreferences. Vous pouvez télécharger le SDK, ici
Pourquoi ne pas vous en tenir à votre liste de tableaux sur une Application de classe? Il ne se détruit lorsque l'application est vraiment tués, donc, il va rester aussi longtemps que l'application est disponible.
La meilleure façon que j'ai pu trouver un faire un Tableau 2D de clés et de mettre la coutume des éléments du tableau dans le tableau 2d de clés et alors de les récupérer par le biais de la 2D arra au démarrage.
Je n'aime pas l'idée de l'utilisation de la chaîne de la valeur parce que la plupart des utilisateurs d'android sont encore au pain d'épices et à l'aide de chaîne de la valeur nécessite en nid d'abeille.
Exemple De Code:
ici ditor est le partage de pref éditeur et rowitem est mon objet personnalisé.
code suivant est la réponse, avec un peu plus de lignes pour les nouveaux venus (moi), par exemple. montre comment convertir le type d'ensemble de l'objet à la liste de tableaux et des conseils supplémentaires sur ce qui se passe avant".putStringSet' et '.getStringSet'. (merci evilone)
n'oubliez pas de Sérialisable:
https://stackoverflow.com/a/7635154/4639974
Vous pouvez enregistrer de la Chaîne et de la coutume tableau liste à l'aide de Gson bibliothèque.
=>vous devez d'Abord créer la fonction pour enregistrer la liste des ensembles de SharedPreferences.
=> Vous devez créer la fonction pour obtenir la liste des ensembles de SharedPreferences.
=> Comment appeler enregistrer et de récupérer la liste des ensembles de fonction.
=> N'oubliez pas d'ajouter gson de la bibliothèque en vous app niveau de la construction.gradle.
mise en œuvre", com.google.code.gson:gson:2.8.2'
Cette méthode est utilisée pour stocker/sauvegarder tableau liste:-
Cette méthode est utilisée pour récupérer la liste des ensembles:-
Vous pouvez convertir en un
Map
Objet à stocker, puis modifiez les valeurs à une liste de tableaux lorsque vous récupérez leSharedPreferences
.Vous pouvez utiliser la sérialisation ou de Gson bibliothèque pour convertir la liste de chaîne de caractères et vice versa, et puis enregistrez la chaîne dans les préférences.
À l'aide de google Gson bibliothèque:
En utilisant la sérialisation Java:
Utiliser cette classe personnalisée:
Comment utiliser:
Aussi avec Kotlin:
Ma classe utils pour enregistrer la liste de
SharedPreferences
À l'aide de
.
Le code complet de mon utils //cochez à l'aide de l'exemple de code d'Activité
J'ai utilisé de la même manière de sauver et de récupérer une Chaîne de caractères, mais ici avec arrayList j'ai utilisé HashSet en tant que médiateur
Pour économiser de l'arrayList pour SharedPreferences nous utilisons HashSet:
1 - nous créer SharedPreferences variable (au lieu où le changement se produit à la baie)
2 - nous convertir la liste de tableaux à HashSet
3 - ensuite, nous avons mis le stringSet et appliquer
4 - vous getStringSet dans HashSet et de recréer liste de tableaux pour définir le HashSet.
Toutes les réponses ci-dessus sont correctes. 🙂 J'ai moi-même utilisé un de ces pour ma situation. Cependant, quand j'ai lu la question, j'ai trouvé que l'OP est en train de parler à un scénario différent que le titre de ce post, si je ne me trompe.
"J'ai besoin de la matrice de rester dans les parages, même si l'utilisateur quitte l'activité et veut revenir à une date ultérieure"
Il veut vraiment que les données soient stockées jusqu'à que l'application est ouverte, quel que soit l'utilisateur de changer d'écran dans l'application.
"cependant je n'ai pas besoin de la matrice après l'application a été complètement fermé"
Mais une fois que l'application est fermée les données ne doivent pas être conservés.Donc je me sens à l'aide de
SharedPreferences
n'est pas le meilleur moyen pour cela.Ce qu'on peut faire de cette exigence est de créer une classe qui étend
Application
classe.En utilisant le setter et getter la liste de tableaux peut être consulté à partir de n'importe où dans l'Application. Et la meilleure partie est une fois que l'application est fermée, nous n'avons pas à vous soucier de données stockées. 🙂
C'est très simple à l'aide de getStringSet et putStringSet dans SharedPreferences, mais dans mon cas, j'ai dupliquer l'objet de Jeu avant que je puisse ajouter quoi que ce soit à l'Ensemble. Sinon, le Jeu ne sera pas enregistré si mon application est fermée de force. Probablement à cause de la remarque ci-dessous dans l'API ci-dessous. (Il a sauvé bien que si l'application est fermée par bouton retour).
Avec Kotlin, pour de simples tableaux et des listes, vous pouvez faire quelque chose comme:
et ensuite accéder à la préférence facilement:
cela devrait fonctionner:
eux, pour l'attraper juste:
cela fonctionne pour moi.
Veuillez utiliser ces deux méthodes pour stocker des données dans la liste de tableaux dans kotlin