国家スラック:
私はにデータを保存する必要がありSharedPreferences
、私はこのようなオブジェクトを持っているような方法で:
{
"days": [
{
"exercises": [
{
"name": "Bench Press",
"sets": 3,
"reps": 8
},
{
"name": "Skull Crushers",
"sets": 3,
"reps": 8
},
{
"name": "Flys",
"sets": 3,
"reps": 8
}
]
},
{
"exercises": [
{
"name": "Bench Press",
"sets": 3,
"reps": 8
},
{
"name": "Skull Crushers",
"sets": 3,
"reps": 8
},
{
"name": "Flys",
"sets": 3,
"reps": 8
}
]
}
]
}
私は、オブジェクトから引くと、オブジェクトに追加する必要があります。私はあなたにマップを保存することはできませんことを知っていますSharedPreferences
。私は私の最善の策は、使用することを考え始めていますObjectOutputStream
が、それは内部メモリを使用するための最善の策であるかどうかはわかりません。私はちょうど私の最良の選択肢が何であるかについての指針を探していますね。
編集:何からAdvice-Dog
言って、私は私の最善の策は、使用することです考えていますgson
。だから私はしたいとき(たとえば)私は最初、設定から対象物をつかむからそれを変換することを「日」の2番目のインデックスに別のエクササイズを追加することをことを意味しないgson
し、運動を追加したオブジェクトに、当時それを変換gson
環境設定を上書きしますか?私はそれが賢明である場合だけで、これは何をすべきかであるかどうかを知りたいと、これは悪いIであるつもりはありません。
アドバイス - 犬:
Androidの中で、より複雑なタイプを保存するとき、私は使用してお勧めしますgson
。Gsonは、GoogleのJSON解析ライブラリで、あなたはJSONを使用していない場合でも、あなたは変換することができますObjects
JSON文字列に変換し、保存することを簡単に。
たとえば、あなたはあなたのリストに変換することができますObjects
にString
、このような。
val list : List<MyObject> // ... add items to your list
// Convert to JSON
val string = gson.toJson(list)
// Store it into Shared Preferences
preferences.putString("list", string).apply()
そして、あなたは簡単にこのようなリストにそれを取り戻すことができます。
// Fetch the JSON
val string = preferences.getString("list", "")
// Convert it back into a List
val list: List<MyObject> = gson.fromJson(string, object : TypeToken<List<MyObject>>() {}.type)