Android Spinner zur Laufzeit mit verschiedenem Inhalt füllen

f4b1

Mitglied
Hallo zusammen,

ich habe in einer Activity drei Spinner:
Diese sollen quasi jeweils eine Kategorie darstellen, und je nachdem was man in der obersten Kategorie wählt, beeinflusst das die Auswahlmöglichkeiten der unteren Kategorien.

In meiner Activity sieht das dann so aus:
Mit dem ersten Spinner wählt man das Zimmer aus um das es sich handelt (Flur, Küche, Wohnzimmer, usw.)
Mit dem zweiten Spinner sollen dann die Geräte ausgewählt werden können, die in diesem Zimmer stehen (Computer, Anlage, oder eben Kaffeemaschine u.s.w.)
Mit dem dritten Spinner dann soll quasi eine Aktion ausgewählt werden, was das gewünschte Gerät machen soll. (z.B. Computer: einschalten/ausschalten, Licht: ein/aus, usw.)

Weiß jemand wie ich das am Besten umsetze? Ich habe jetzt z.B. schon versucht, die einzelnen Auswahlmöglichkeiten als <string-array> in der arrays.xml zu speichern. Im Layout habe ich die Spinner mit jeweils einem <string-array> initialisiert, so dass wenn ich die Activity zum ersten Mal aufrufe, schon richtige Werte in den Spinnern stehen.
Nun soll es aber ja möglich sein, dass wenn man im ersten Spinner ein anderes Zimmer auswählt, sich die Spinnereinträge für die Geräte und Aktionen ändert
Ich habe mir das jetzt mal so überlegt, dass für die Spinner jeweils einen setOnItemSelectedListener registriere und je nachdem welche Position im ersten Spinner geklickt wurde, für den darunter liegenden Spinner der Adapter neu gesetzt wird.

Das funktioniert mehr oder weniger, hat jemand für das Problem eine elegantere Lösung? Mir scheint das so ziemlich ungeschickt zu sein...

Vielen Dank für Eure Hilfe!
 
Mhm, ich wüsste jetzt nicht was daran verkehrt sein sollte. Ob man da jetzt wirklich ein String-Array per XML benutzen möchte musst du entscheiden und kommt sicher auch auf das Programm drauf an. Wenn der Benutzer neue Zimmer/Geräte etc. hinzufügen soll, wirst du so natürlich nicht weiterkommen, dann könnte man die DB nutzen und dann mit z.B. dem SimpleCursorAdapter anstelle des ArrayAdapters(den du vermutlich benutzt oder? )

Wenn es das tut was du willst und es auch keine größeren Probleme gibt, ist doch alles i.O. ? 😉
 
Danke für deine Antwort eRaaaa.

Ich hab noch nicht sonderlich viel Erfahrung mit GUI-Programmierung, und wusste somit nicht was der "Best Practice"Fall für mein Problem ist. Aber wie gesagt, es funktioniert ja eigentlich. 🙂

Richtig, hab den ArrayAdapter benutzt.

Viele Grüße,
Fabi
 

Neue Themen


Zurück
Oben