Mam spinner, który jest wypełniony CursorAdapter
. Teraz przy tworzeniu tego spinnera (dynamicznie) chcę ustawić domyślny wybór inny niż 0 (0 jest pierwszym elementem na liście)Android Spinner.setSelection() nie działa
Tak więc otrzymałem program ustawiający dla tego zadania, który jest wywoływany po tym, jak obiekt został stworzony. Ale z jakiegoś powodu, bez względu na to, co przekażę w tym ustawieniu, 0 zawsze jest przekazywane do metody onItemSelected()
w obrębie Spinner's OnItemSelectedListener
.
JEDNAK, jeśli tylko poczekaj, aż pierwsza selekcja się odbędzie i ponownie uruchom mój seter, wszystko działa poprawnie. Tak więc, aby uczynić go bardziej jasne, oto co widzę w debuggera:
- obiekt (wirowania) powstaje
- pokrętła słuchacza jest dołączony
- seter prowadzony jest pewna liczba, powiedzmy 4 (the spinner zawiera dużo więcej niż 4 pozycje) jest przekazywany do metody
setSelection()
- trochę poczekać
- TERAZ
onItemSelected()
prowadzony jest po raz pierwszy, ale biorąc pod uwagę położenie tej metody jest 0! - poczekać nieco więcej
- ponownie uruchamiamy setter
- ponownie
onItemSelected()
prowadzony jest tym razem, że pozycja podawana jest 4, jak to miało być!
Teraz jest podłączony. Wydaje się, że nie można ustawić tej tarczy, dopóki pierwszy wybór początkowy, który zawsze wynosi 0, został uruchomiony. Dlaczego tak jest i co mogę zrobić, aby ustawić początkowy wybór?
Czy możesz wpisać kod używany podczas ustawiania Spinnera? Wygląda na to, że może to być spowodowane tym, że masz kod w niewłaściwej kolejności. –
Ta odpowiedź (przy innym pytaniu SO) działała dla mnie: http://stackoverflow.com/a/17370964/1617737 –