Android Spinner.setSelection() funktioniert nicht
Bin ich ein spinner, die gefüllt ist mit einem CursorAdapter
. Jetzt beim erstellen der spinner (dynamisch) möchte ich auf eine Standard-Auswahl unterschiedlich zu 0 (0 ist das erste Element in der CursorAdapter
Liste)
Also ich hab ein Trendsetter für diesen job, das wird nur aufgerufen, nachdem das Objekt erstellt wurde. Aber aus irgendeinem Grund, egal was ich pass auf, dass setter, immer 0 übergeben wird, die onItemSelected()
Methode innerhalb der Spinner ist OnItemSelectedListener
.
ABER wenn ich nur warten, bis die erste erste Auswahl geschah und meine setter wieder alles funktioniert. So, um es hier klar ist, was ich sehe im debugger:
- Objekt (spinner) erstellt
- spinner Hörer befestigt ist
- setter ausgeführt wird, eine Zahl, sagen wir 4 (die spinner enthält mehr als 4 Selektionen) wird an die
setSelection()
Methode - EIN BISSCHEN WARTEN,
- JETZT
onItemSelected()
zum ersten mal ausgeführt wird, aber die position gegeben, die Methode ist 0! - WARTEN, EIN BISSCHEN MEHR
- wieder laufen wir die setter -
- wieder
onItemSelected()
ausgeführt, DIESE ZEIT, die position gegeben ist, 4 wie es sein soll!
Nun, die ' s verdrahtet. Es scheint nicht möglich sein, dass spinner, bis die erste erste Auswahl, die ist immer 0, die ausgeführt wurde. Warum also ist es so wie es ist und was kann ich tun, um die anfängliche Auswahl?
Diese Antwort (auf eine andere Frage) bei mir funktioniert: stackoverflow.com/a/17370964/1617737
InformationsquelleAutor masi | 2012-01-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Spinner#setSelection (int position, boolean animate)
mit animate = false. Ich erinnere mich eine Weile zurück, ich hatte ein ähnliches problem und dies war der trick. Die interne Implementierung scheint, unterscheiden sich, abgesehen von der Differenz aus der belebten Teil.Hat bei mir auch..aber weiß nicht, warum es funktioniert, wenn Sie animiert wird wahr..
InformationsquelleAutor asenovm
Wenn Sie wissen, standardmäßig ausgewählte spinner-Element, es kann wie folgt geschrieben werden:
onItemselectedlistener wird aufgerufen, wenn Sie ändern die spinner-Auswahl.
InformationsquelleAutor Senthil Mg