Kita perlu mendapatkan objek pengguna di banyak tempat, yang berisi banyak bidang. Setelah masuk, saya ingin menyimpan / menyimpan objek pengguna ini. Bagaimana kita bisa menerapkan skenario semacam ini?
Saya tidak bisa menyimpannya seperti ini:
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);
android
sharedpreferences
Piraba
sumber
sumber
Jawaban:
Anda dapat menggunakan gson.jar untuk menyimpan objek kelas ke dalam SharedPreferences . Anda dapat mengunduh toples ini dari google-gson
Atau tambahkan ketergantungan GSON dalam file Gradle Anda:
Membuat preferensi bersama:
Untuk menyimpan:
Mendapatkan kembali:
sumber
Untuk menambahkan jawaban @ MuhammadAamirALi, Anda dapat menggunakan Gson untuk menyimpan dan mengambil daftar objek
Simpan Daftar objek yang ditentukan pengguna ke SharedPreferences
Dapatkan Daftar objek yang ditentukan pengguna dari SharedPreferences
sumber
Saya tahu utas ini agak tua. Tapi saya akan memposting ini dengan harapan bisa membantu seseorang. Kami dapat menyimpan bidang Objek apa pun untuk preferensi bersama dengan membuat serialisasi objek ke String. Di sini saya telah digunakan
GSON
untuk menyimpan objek apa pun untuk preferensi bersama.Simpan Objek ke Preferensi:
Ambil Objek dari Preferensi:
Catatan :
Ingat untuk menambahkan
compile 'com.google.code.gson:gson:2.6.2'
kedependencies
dalam Gradle Anda.Contoh :
Memperbarui:
Seperti @Sharp_Edge tunjukkan dalam komentar, solusi di atas tidak bekerja
List
.Sedikit modifikasi pada tanda tangan
getSavedObjectFromPreference()
- dariClass<GenericClass> classType
keType classType
akan membuat solusi ini digeneralisasi. Tanda tangan fungsi yang dimodifikasi,Untuk memohon,
Selamat Coding!
sumber
commit
bukanapply
. Mungkin membantu Anda.List<CustomClass>
bagaimana saya harus melakukannya?getSavedObjectFromPreference(context, "mPreference", "mObjectKey", SampleClass.class)
tidak menerimaList<CustomClass>.class
:(Lebih baik adalah Membuat
Constants
kelas global untuk menyimpan kunci atau variabel untuk mengambil atau menyimpan data.Untuk menyimpan data, panggil metode ini untuk menyimpan data dari mana saja.
Gunakan itu untuk mendapatkan data.
dan metode seperti ini akan melakukan triknya
sumber
Coba cara terbaik ini:
PreferenceConnector.java
Tulis Nilai:
Dan Dapatkan nilai menggunakan:
sumber
return PreferenceManager.getDefaultSharedPreferences(context);
bukanreturn context.getSharedPreferences(PREF_NAME, MODE);
Anda belum menyatakan apa yang Anda lakukan dengan
prefsEditor
objek setelah ini, tetapi untuk mempertahankan data preferensi, Anda juga perlu menggunakan:sumber
Lihat di sini, ini dapat membantu Anda:
https://github.com/AltasT/PreferenceVObjectFile/blob/master/PreferenceVObjectFile/src/com/altas/lib/PreferenceUtils.java
sumber
Cara lain untuk menyimpan dan mengembalikan objek dari preferensi bersama android tanpa menggunakan format Json
sumber
Anda dapat menyimpan objek dalam preferensi tanpa menggunakan pustaka apa pun, pertama-tama kelas objek Anda harus mengimplementasikan Serializable:
}
Kemudian Anda dapat dengan mudah menggunakan dua metode ini untuk mengkonversi objek ke string dan string ke objek:
Untuk menyimpan:
Untuk membaca
sumber
Langkah 1: Salin tempel kedua fungsi ini di file java Anda.
Langkah 2: untuk menghemat penggunaan:
untuk mengambil penggunaan:
Anda dapat mengatur preferensi bersama yang berbeda dengan menggunakan nama kunci yang berbeda seperti:
sumber
Jika Anda ingin menyimpan seluruh objek yang Anda dapatkan sebagai respons, itu dapat dicapai dengan melakukan sesuatu seperti,
Pertama, buat metode yang mengubah JSON Anda menjadi string di kelas util Anda seperti di bawah ini.
Kemudian Di Kelas Preferensi Bersama Lakukan sesuatu seperti,
dan kemudian buat metode untuk getPreferences
Kemudian panggil saja metode Pertama ketika Anda mendapatkan respons dan kedua ketika Anda perlu mendapatkan data dari preferensi berbagi seperti
itu saja.
Semoga ini bisa membantu Anda.
Happy Coding();
sumber
Saya mengalami masalah dalam menggunakan jawaban yang diterima untuk mengakses data Preferensi Bersama di seluruh kegiatan. Dalam langkah-langkah ini, Anda memberi getSharedPreferences nama untuk mengaksesnya.
Tambahkan dependensi berikut dalam file build.gradel (Module: app) di bawah Gradle Scripts:
Untuk Menyimpan:
Untuk Mengambil dalam Aktivitas yang Berbeda:
sumber
Semoga ini bisa membantu Anda :)
sumber
Berikut ini adalah cara menggunakan Properti Delegasi Kotlin yang saya ambil dari sini , tetapi diperluas dan memungkinkan mekanisme sederhana untuk mendapatkan / mengatur properti SharedPreference.
Untuk
String
,Int
,Long
,Float
atauBoolean
, menggunakan standar SharePreference getter (s) dan setter (s). Namun, untuk semua kelas data lainnya, ia menggunakan GSON untuk membuat serial ke aString
, untuk setter. Kemudian deserializes ke objek data, untuk pengambil.Mirip dengan solusi lain, ini membutuhkan penambahan GSON sebagai ketergantungan pada file gradle Anda:
Berikut adalah contoh kelas data sederhana yang ingin kami simpan dan simpan ke SharedPreferences:
Ini adalah satu kelas yang mengimplementasikan delegasi properti:
Catatan: Anda tidak perlu memperbarui apa pun di
sealed class
. Properti yang didelegasikan adalah Obyek / LajangUserPreferenceProperty
,NullableUserPreferenceProperty
danFirstTimeUser
.Untuk menyiapkan objek data baru untuk disimpan / didapatkan dari SharedPreferences, sekarang semudah menambahkan empat baris:
Akhirnya, Anda dapat membaca / menulis nilai ke SharedPreferences dengan hanya menggunakan
by
kata kunci:sumber
Jika Objek Anda kompleks, saya sarankan untuk Serialize / XML / JSON dan simpan konten tersebut ke kartu SD. Anda dapat menemukan info tambahan tentang cara menyimpan ke penyimpanan eksternal di sini: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
sumber
ada dua file yang memecahkan semua masalah Anda tentang preferensipenggunaan bersama
1) AppPersistence.java
2) AppPreference.java
sekarang Anda dapat menyimpan, menghapus, atau mendapatkan seperti,
-menyimpan
-menghapus
-Dapatkan
sumber
Simpan data dalam SharedPreference
sumber
Kelas utilitas saya untuk menyimpan daftar
SharedPreferences
Menggunakan
.
Kode lengkap utils saya // periksa menggunakan contoh dalam kode Kegiatan
sumber
Menambahkan perpustakaan jackson ke gradle:
Kelas ujian saya:
Objek Java ke JSON:
Simpan dalam preferensi bersama:
Pulihkan dari preferensi bersama:
sumber