- Forum-Beiträge: 614
07.01.2022, 22:06:21 via Website
07.01.2022 22:06:21 via Website
Hallo zusammen
Ich möchte eine Liste von Namen in einer Sharedpreference speichern und später wieder laden. Das Packen der Liste mache ich mit Gson.
package ch.robbisoft.klassennotfall
import android.content.Context
import android.os.Environment
import android.util.Log
import com.google.gson.Gson
import org.json.JSONObject
import java.io.*
import java.lang.Exception
import java.util.ArrayList
//Internetsuche
//https://kelut.at/arraylist-mit-objekten-in-den-sharedpreferences-abspeichern/
//https://newbedev.com/javascript-create-json-object-with-kotlin-code-example
private const val DATEN = "liste"
private val TAG = Speicher::class.simpleName
class Speicher(var ctx : Context,var dateiname : String) {
//Daten mit Gson Packen und dann mit savepreference Speichern
fun speichern( daten : ArrayList<String>{
val sp = ctx.getSharedPreferences(dateiname, Context.MODE_PRIVATE)
val schreiber = sp.edit()
//Daten packen
val gson = Gson()
val json = gson.toJson(daten)
schreiber.putString("name", json)
if (schreiber.commit()){
Log.e(TAG, "Daten können nicht gespeichert werden")
}
}
fun laden() : ArrayList<String>?{
val sp = ctx.getSharedPreferences(dateiname, Context.MODE_PRIVATE)
var daten : ArrayList<String>? = null
try {
val json = if(sp.contains("name"))
sp.getString("name", "")
else
"Fehler"
val gson = Gson()
daten = gson.fromJson(json, ArrayList<String>
}catch (e : Exception){
Log.e(TAG, e.message.toString())
}
return daten
}
}
Beim Entpacken der Namen bleibe ich hängen. Ich habe es wie folgt gelöst:
daten = gson.fromJson(json, ArrayList<String>
Das will der Compiler aber nicht akzeptieren. Kann mir jemand sagen wie die Zeile korrekt lauten muss?
Gruss Renato
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.