Wie kann ich eine HashMap in den freigegebenen Einstellungen in Android speichern ?
android
sharedpreferences
Jibysthome
quelle
quelle
Antworten:
Ich würde nicht empfehlen, komplexe Objekte in SharedPreference zu schreiben. Stattdessen würde ich es verwenden
ObjectOutputStream
, um es in den internen Speicher zu schreiben.quelle
Ich benutze
Gson
zu konvertierenHashMap
zuString
und dann speichern Sie es aufSharedPrefs
quelle
Ich habe einen einfachen Code geschrieben, um die Karte in der Präferenz zu speichern und die Karte aus der Präferenz zu laden. Keine GSON- oder Jackson-Funktionen erforderlich. Ich habe gerade eine Map mit String als Schlüssel und Boolean als Wert verwendet.
quelle
getApplicationContext
von einer einfachen Klasse aus zugreifen ?quelle
Als Ableger der Antwort von Vinoj John Hosan habe ich die Antwort geändert, um allgemeinere Einfügungen basierend auf dem Schlüssel der Daten anstelle eines einzelnen Schlüssels wie zu ermöglichen
"My_map"
.In meiner Implementierung
MyApp
ist meineApplication
Override-Klasse undMyApp.getInstance()
handelt, um die zurückzugebencontext
.quelle
Context
von einer Bibliothek aus auf die Instanz zugreifen würden . Schauen Sie sich diese andere SO-Frage an: Ist es möglich, den Anwendungskontext in einem Android-Bibliotheksprojekt abzurufen?Sie können stattdessen versuchen, JSON zu verwenden.
Zum Speichern
Zum bekommen
quelle
quelle
Verwenden von PowerPreference .
Daten speichern
Daten lesen
quelle
map -> string
Zeichenfolge -> Karte
quelle
Sie können dies in einer dedizierten Datei mit freigegebenen Einstellungen verwenden (Quelle: https://developer.android.com/reference/android/content/SharedPreferences.html ):
quelle
Der faule Weg: Speichern Sie jeden Schlüssel direkt in SharedPreferences
Für den engen Anwendungsfall, in dem Ihre Karte nur ein paar Dutzend Elemente enthält, können Sie die Tatsache nutzen, dass SharedPreferences wie eine Karte funktioniert, und einfach jeden Eintrag unter einem eigenen Schlüssel speichern:
Karte speichern
Schlüssel von der Karte lesen
Wenn Sie einen benutzerdefinierten Voreinstellungsnamen (dh
context.getSharedPreferences("myMegaMap")
) verwenden, können Sie auch alle Schlüssel mit abrufenprefs.getAll()
quelle
Ich weiß, dass es etwas zu spät ist, aber ich hoffe, dass dies für jede Lesung hilfreich sein kann.
Also was ich tue ist
1) Erstellen Sie HashMap und fügen Sie Daten hinzu wie: -
2) Schreiben Sie es in den Shareprefrences-Editor wie: -
3) Lesen von Daten wie: - in einer neuen Klasse, in der sie gelesen werden sollen
quelle