Czy w systemie Android możemy przechowywać obiekt klasy we wspólnych preferencjach i później pobrać obiekt?
Jeśli to możliwe, jak to zrobić? Jeśli nie jest to możliwe, jakie są inne możliwości zrobienia tego?
Wiem, że serializacja to jedna opcja, ale szukam możliwości przy użyciu wspólnych preferencji.
android
object
sharedpreferences
androidGuy
źródło
źródło
Odpowiedzi:
Niemożliwe.
W SharedPrefences SharePreferences.Editor można przechowywać tylko proste wartości
A co szczególnie z klasą, którą musisz zapisać?
źródło
Tak, możemy to zrobić za pomocą Gson
Pobierz działający kod z GitHub
Na ratunek
Za dostać
Aktualizacja 1
Najnowszą wersję GSON można pobrać ze strony github.com/google/gson .
Aktualizacja2
Jeśli używasz Gradle / Android Studio, po prostu umieść następujące w
build.gradle
sekcji zależności -źródło
String json = gson.toJson("MyObject");
powinien być obiektem, a nie Stringiem.możemy użyć Outputstream do wyprowadzenia naszego Object do pamięci wewnętrznej. I przekonwertuj na ciąg, a następnie zapisz w preferencjach. Na przykład:
kiedy musimy wyodrębnić Object z Preference. Użyj kodu jak poniżej
źródło
Miałem ten sam problem, oto moje rozwiązanie:
Mam klasę MyClass i ArrayList <MyClass>, którą chcę zapisać w Shared Preferences. Na początku dodałem do MyClass metodę, która konwertuje ją na obiekt JSON:
Oto metoda zapisywania elementów obiektu „ArrayList <MyClass>”:
A oto metoda na pobranie obiektu:
Zauważ, że StringSet w Shared Preferences jest dostępny od API 11.
źródło
Korzystanie z biblioteki Gson:
Sklep:
Odzyskać:
źródło
Możesz to zrobić za pomocą
PowerPreference
biblioteki w 3 prostych krokach!https://github.com/AliAsadi/PowerPreference
1. Utwórz obiekt
2. Napisz do wspólnych preferencji
3. Zdobycie przedmiotu
źródło
Korzystanie z tego obiektu -> TinyDB - Android-Shared-Preferences-Turbo jest bardzo proste. możesz za jego pomocą zapisać większość powszechnie używanych obiektów, takich jak tablice, liczby całkowite, listy łańcuchów itp
źródło
Możesz użyć biblioteki Complex Preferences Android - by Felipe Silvestre do przechowywania własnych obiektów. Zasadniczo używa mechanizmu GSON do przechowywania obiektów.
Aby zapisać obiekt do prefs:
Aby go odzyskać:
źródło
Możesz użyć GSON, używając Gradle Build.gradle:
Następnie w swoim kodzie, na przykład pary string / boolean z Kotlin:
Dodawanie do SharedPrefs:
Teraz, aby pobrać dane:
źródło
Wspólne preferencje wspólne (CURD) SharedPreference: do przechowywania danych w postaci par wartość-klucz z prostą klasą Kotlin.
Przechowywanie danych:
Aby przechowywać dane typu String, Int i Boolean, mamy trzy metody o tej samej nazwie i różnych parametrach (Przeciążenie metod).
Pobierz dane: aby pobrać dane przechowywane w SharedPreferences, użyj następujących metod.
Wyczyść wszystkie dane: Aby wyczyścić całe SharedPreferences, użyj poniższego kodu.
Usuń określone dane:
Wspólna klasa preferencji wspólnych
Blog: https://androidkeynotes.blogspot.com/2020/02/shared-preference.html
źródło
Nie ma sposobu na przechowywanie obiektów w SharedPreferences, co zrobiłem, to utworzyłem publiczną klasę, umieściłem wszystkie potrzebne parametry i utworzyłem setery i gettery, mogłem uzyskać dostęp do moich obiektów,
źródło
Czy musisz pobierać obiekt nawet po zamknięciu aplikacji lub po prostu podczas jej działania?
Możesz przechowywać go w bazie danych.
Lub po prostu utwórz niestandardową klasę Application.
A potem z każdej czynności wykonaj:
Nie jest to najlepszy sposób, ale działa.
źródło
Tak, możesz przechowywać i pobierać obiekt za pomocą Sharedpreference
źródło