Подтвердить что ты не робот

Android Spinner.setSelection() не работает

У меня есть счетчик, который заполнен CursorAdapter. Теперь, создавая этот счетчик (динамически), я хочу установить для параметра по умолчанию значение, отличное от 0 (0 - первый элемент в списке CursorAdapter)

Итак, у меня есть сеттер для этой работы, которая вызывается только после того, как объект был создан. Но по какой-то причине, независимо от того, что я передаю в этом сеттере, 0 всегда передается методу onItemSelected() внутри Spinner OnItemSelectedListener.

ОДНАКО, если я просто подожду, пока не произойдет первый первоначальный выбор, и снова запустите мой сеттер, все будет хорошо. Итак, чтобы сделать это более ясным, это то, что я вижу в отладчике:

  • объект (spinner) создан
  • прослушиватель spinner подключен
  • setter запущен, число, скажем, 4 (счетчик содержит путь более чем 4 выбора) передается методу setSelection()
  • ПОДОЖДИТЕ БИТ
  • СЕЙЧАС onItemSelected() запускается в первый раз, но позиция, данная этому методу, равна 0!
  • ПОДОЖДИТЕ ПОДРОБНЕЕ
  • снова запускаем setter
  • снова onItemSelected() запускается, В ЭТОМ ВРЕМЕНИ позиция, указанная как 4, как это предполагалось!

Теперь это проводное. Кажется, что невозможно установить этот счетчик до тех пор, пока не будет запущен первый начальный выбор, который всегда равен 0. Так почему это так, и что я могу сделать, чтобы установить начальный выбор?

4b9b3361

Ответ 1

Попробуйте Spinner#setSelection (int position, boolean animate) с animate = false. Я помню какое-то время назад, у меня была аналогичная проблема, и это сделало трюк. Внутренняя реализация, похоже, отличается от разницы, исходящей от одушевленной части.

Ответ 2

Если вы знаете выбранный по умолчанию выбранный элемент spinner, его можно записать следующим образом:

Spinner sp = (Spinner) findViewById(R.id.spinner);
sp.setSelection(0);   // sets the first item 

onItemselectedlistener вызывается, когда вы изменяете выбор элемента spinner.