Comment puis-je enregistrer un HashMap dans les préférences partagées sous Android?
android
sharedpreferences
jibysthomes
la source
la source
Réponses:
Je ne recommanderais pas d'écrire des objets complexes dans SharedPreference. Au lieu de cela, j'utiliserais
ObjectOutputStream
pour l'écrire dans la mémoire interne.la source
Je l' utilise
Gson
pour convertirHashMap
àString
et puis enregistrez - leSharedPrefs
la source
J'ai écrit un simple morceau de code pour enregistrer la carte de préférence et charger la carte de préférence. Aucune fonction GSON ou Jackson requise. Je viens d'utiliser une carte ayant String comme clé et Boolean comme valeur.
la source
getApplicationContext
partir d'une classe simple?la source
En tant que spin off de la réponse de Vinoj John Hosan, j'ai modifié la réponse pour permettre des insertions plus génériques, basées sur la clé des données, au lieu d'une seule clé comme
"My_map"
.Dans mon implémentation,
MyApp
est maApplication
classe de remplacement etMyApp.getInstance()
agit pour renvoyer le fichiercontext
.la source
Context
instance à partir d'une bibliothèque. Consultez cette autre question SO: est-il possible d'obtenir le contexte de l'application dans un projet de bibliothèque Android?Vous pouvez essayer d'utiliser JSON à la place.
Pour économiser
Pour obtenir
la source
la source
Utilisation de PowerPreference .
Enregistrer des données
Lire les données
la source
map -> chaîne
chaîne -> carte
la source
Vous pouvez l'utiliser dans un fichier de préférences partagé dédié (source: https://developer.android.com/reference/android/content/SharedPreferences.html ):
la source
La manière paresseuse: stocker chaque clé directement dans SharedPreferences
Pour le cas d'utilisation restreint où votre carte ne contiendra que quelques dizaines d'éléments, vous pouvez profiter du fait que SharedPreferences fonctionne à peu près comme une carte et stocke simplement chaque entrée sous sa propre clé:
Stocker la carte
Lecture des clés de la carte
Dans le cas où vous utilisez un nom de préférence personnalisé (c'est-à-dire
context.getSharedPreferences("myMegaMap")
), vous pouvez également obtenir toutes les clés avecprefs.getAll()
la source
Je sais que c'est un peu trop tard, mais j'espère que cela pourra être utile à n'importe quelle lecture.
alors ce que je fais c'est
1) Créez HashMap et ajoutez des données comme: -
2) Écrivez-le pour partager l'éditeur de préférences comme: -
3) Lire des données comme: - dans une nouvelle classe où vous voulez qu'elles soient lues
la source