Ich muss die Daten retten SharedPreferences
in einer solchen Art und Weise , wo ich ein Objekt wie dieses:
{
"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
}
]
}
]
}
Ich muß von dem Objekt ziehen und zu dem Objekt hinzufügen. Ich weiß , dass Sie nicht speichern Karten SharedPreferences
. Ich beginne zu glauben , dass meine beste Wette zu verwenden ist , ObjectOutputStream
aber ich bin nicht sicher , ob das die beste Wette ist , die internen Speicher zu verwenden. Ich glaube , ich bin nur der Suche nach Orientierung, was meine besten Optionen sind.
edit: von dem, was Advice-Dog
gesagt, ich meine beste Wette denke zu verwenden ist gson
. So Heißt das , dass , wenn ich will (zum Beispiel) eine andere Übung mit dem zweiten Index von „Tagen“ hinzufügen , dass ich zuerst das Objekt von Präferenzen greifen, wandeln sie aus gson
zu einem Objekt, fügen Sie dann die Übung, dann wandeln sie zurück auf gson
, dann die Einstellungen überschreiben? Ich sage nicht, das ist schlecht , ich möchte nur wissen , ob das , was getan werden sollte und ob es ratsam ist.
Wenn komplexere Arten in Android zu speichern, würde ich mit vorschlagen gson
. Gson ist Googles JSON - Parsing - Bibliothek, und auch wenn Sie nicht JSON verwenden, können Sie Ihre umwandeln Objects
in ein JSON String, und zu speichern , die leicht.
Zum Beispiel können Sie Ihre Liste der umwandeln Objects
in ein String
so.
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()
Und dann kann man leicht bekommen sie in eine Liste wie folgt zurück.
// 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)