StrigArray mit Gson entpacken

  • Antworten:1
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 614

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

Kommentieren
Beste Antwort
Robbiani Renato
  • Forum-Beiträge: 614

07.01.2022, 22:22:09 via Website

Hallo zusammen

daten = gson.fromJson(json, ArrayList::class.java) as ArrayList<String>?

Ich weiss nicht ob es die beste Lösung ist, aber so geht es. Und das ist die Haubtsache.

Gruss Renato

Hilfreich?
Kommentieren