Spinner dynamisch ändern

  • Antworten:8
  • Bentwortet
tofse
  • Forum-Beiträge: 12

26.05.2020, 07:25:43 via Website

Hallo
wie kann ich unter Kotlin zur Laufzeit den Text eines Spinner Items ändern.
Für einen Filter verwende ich ein Spinner mit Einträgen

heute
3 Tage
1 Woche
1 Monat
{Datum}

Bei Auswahl vom letzten Item erscheint der Datumauswahldialog und das gewählte Datum soll an der Stelle von {Datum} erscheinen.
Wie kann ich auf den Text des Items zum Ändern zugreifen (Kotlin)?

Danke
Christof

Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.527

27.05.2020, 11:17:57 via Website

Den Code wirst du schon haben wenn nicht jetzt dann später.

Du übergibst mit Sicherheit eine Liste. Du hast bestimmt ein string array als resourse im XML. Und genau aus der erstellst du eine Liste on kotlin eigentlich eine collection java arrayListe.
Diese Liste übergibst du an den Adapter. Du wisst die Liste nicht bekommen sonder hast sie ja schon willst nur einen Eintrag ändern.

Ich sagte dir schon wenn du das alles in einem Rutsch machst Adapter erstellen und Liste aus den Resoursen lesen und das gleich dem spinner geben.
Sagte ich das du es einzeln machen sollst.
Ich gehe mal davon aus das du den Adapter nicht mit einem costruktor erstellst sondern mit der staic Methode
CreateFromResorce. Da hast du natürlich keinen Zugriff auf dein Liste.
Also gehe den ausführlichen Weg. Mit einem der costruktor.
Aus der resourse erstellst du zuerst deine Liste oder auch array.

Dann schaue dir mal einige Beispiele zu Spinner in Kotlin im Netz an.

So nun such deinen Code und zeige.
Diese Diskussion führt hier zu nichts.

— geändert am 27.05.2020, 11:47:12

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

26.05.2020, 10:17:11 via Website

Wie in Java, solltest du auf die Items bzw. den ArrayAdapter etc. zugreifen können um Items zu ändern.
Woe genau die Syntax in Kotlin aussieht keine Ahnung.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

27.05.2020, 07:35:05 via Website

Hallo in etwa so.

override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) {
    if(pos==4){
       deineArrayListe.set(4,"dein Datum")
       deinArrayAdapter.notifyDataSetChanged()
    }

}
Hilfreich?
Kommentieren
tofse
  • Forum-Beiträge: 12

27.05.2020, 09:34:18 via Website

Hi
ich habe gerade den Code nicht im Zugriff, aber wie komme ich an die Array Liste? Über spinner.adapter komme ich an den array Adapter, oder? Und dann?
Danke
Christof

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

27.05.2020, 09:42:26 via Website

Zeige deinen Code. Ohne kann ich keine Antwort geben.

Ps. das ist die Liste die du dem Adapter übergibtst. Wenn du das in einem Rutsch machst. Mußt du es eben einzeln machen.
Eine Liste aus den Resoursen erstellen und dann an der Adapter übergeben.

— geändert am 27.05.2020, 09:46:06

Hilfreich?
Kommentieren
tofse
  • Forum-Beiträge: 12

27.05.2020, 10:45:20 via Website

Hallo,
irgendwie habe ich einen gedanklichen Hänger. Ich habe schon spinner dynamisch erzeugt, als Z. B. Einträge aus der Datenbank in eine Liste und dann den Spinner gefüllt. Alles ok.
Aber jetzt muss das Ganze doch 'rückwärts laufen'. Ich übergebe keine Liste sondern ich will die Liste bekommen, damit ich den Eintrag an pos 4 ändern kann. Oder habe ich da einen kompletten Denkfehler. Den entsprechenden Code kann ich nicht zeigen, da mir genau dieses fehlt, also irgendwie ein arrayAdapter.getList() was es aber so ja nicht gibt, irgendwie:?

Hilfreich?
Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.527

27.05.2020, 11:17:57 via Website

Den Code wirst du schon haben wenn nicht jetzt dann später.

Du übergibst mit Sicherheit eine Liste. Du hast bestimmt ein string array als resourse im XML. Und genau aus der erstellst du eine Liste on kotlin eigentlich eine collection java arrayListe.
Diese Liste übergibst du an den Adapter. Du wisst die Liste nicht bekommen sonder hast sie ja schon willst nur einen Eintrag ändern.

Ich sagte dir schon wenn du das alles in einem Rutsch machst Adapter erstellen und Liste aus den Resoursen lesen und das gleich dem spinner geben.
Sagte ich das du es einzeln machen sollst.
Ich gehe mal davon aus das du den Adapter nicht mit einem costruktor erstellst sondern mit der staic Methode
CreateFromResorce. Da hast du natürlich keinen Zugriff auf dein Liste.
Also gehe den ausführlichen Weg. Mit einem der costruktor.
Aus der resourse erstellst du zuerst deine Liste oder auch array.

Dann schaue dir mal einige Beispiele zu Spinner in Kotlin im Netz an.

So nun such deinen Code und zeige.
Diese Diskussion führt hier zu nichts.

— geändert am 27.05.2020, 11:47:12

Hilfreich?
Kommentieren
tofse
  • Forum-Beiträge: 12

27.05.2020, 12:27:13 via Website

Doch, die Diskussion bringt viel, ich glaub ich habs verstanden. Werde es heute Abend versuchen.
Bisher habe ich das Array aus der XML über die GUI im Studio dem Spinner zugewiesen

Hilfreich?
Kommentieren
tofse
  • Forum-Beiträge: 12

27.05.2020, 21:59:50 via Website

Hat funktioniert, wenn man nicht die Liste über die GUI zuweist sondern im Code selber.
Das hatte ich so nicht auf dem Schirm, bin irgendwie davon ausgegangen, dass man auf die Liste jederzeit zugreifen kann

Hilfreich?
Kommentieren