Я работаю над проектом Android, и я использую счетчик, который использует адаптер массива, который заполняется из базы данных.
Я не могу узнать, как я могу установить выбранный элемент программно из списка. Например, если в блесне у меня есть следующие предметы:
- Категория 1
- Категория 2
- Категория 3
Как бы программно сделать категорию 2 выбранным элементом при создании экрана. Я думал, что это может быть похоже на c # IE Spinner.SelectedText = "Категория 2", но, похоже, нет никакого метода, подобного этому для Android.
spinner.setSelection()
. Это будет работать просто отлично. Вы также можете создать метод, который поможет вам сопоставить ваши индексы с их фактическими строками.Ответы:
Используйте следующее:
spinnerObject.setSelection(INDEX_OF_CATEGORY2)
.источник
mySpinner.setSelection(arrayAdapter.getPosition("Category 2"));
Ни один из этих ответов не дал мне решения, работал только с этим:
источник
Вы можете использовать выше, как:
и, конечно, вы также можете выбрать по индексу прямо как
источник
Category 2
который, как я полагаю, представлял собой строку (если он пытался его использоватьSpinner.SelectedText = "Category 2"
), но приведенный выше код предназначен для along
.adapter.getItem(position)
, нетadapter.getItemId(position)
.Некоторое объяснение (по крайней мере, для фрагментов - никогда не пробовал с чистой деятельностью). Надеюсь, это поможет кому-то лучше понять Android.
Самый популярный ответ Аруна Джорджа правильный, но в некоторых случаях не работает.
В ответе Marco HC используется Runnable, который является последним средством из-за дополнительной загрузки процессора.
Ответ таков: вы должны просто выбрать правильное место для вызова setSelection () , например, это работает для меня:
Но это не будет работать в onCreateView () . Я подозреваю, что это причина интереса к этой теме.
Секрет в том, что с Android вы не можете делать все, что хотите, ни в каком методе - упс :( - компоненты могут просто не быть готовы. В качестве другого примера - вы не можете прокручивать ScrollView ни в onCreateView (), ни в onResume () ( см ответ здесь )
источник
Чтобы найти значение и выбрать его:
источник
Почему бы вам не использовать ваши значения из БД и сохранить их в ArrayList, а затем просто использовать:
источник
Оптимальное решение:
Чтобы получить позицию элемента автоматически добавьте следующее утверждение
источник
Вы можете сделать общий метод для такой работы, как я делаю в своем UtilityClass, который
источник
Вы можете легко установить это так:
spinner.setSelection(1)
вместо 1 вы можете установить любую позицию списка, которую вы хотели бы показать.источник
У меня есть SimpleCursorAdapter, поэтому я должен продублировать данные для использования respose в этом посте. Итак, я рекомендую вам попробовать этот способ:
Я думаю, что это настоящий путь
источник
Это работа для меня.
источник
Если у вас есть список контактов, вы можете пойти на это:
источник
Я знаю, что уже ответили, но простой код для выбора одного элемента, очень простой:
источник
источник
Об этом говорится в комментариях в других местах на этой странице, но я считаю полезным вытащить это в ответ:
При использовании адаптера, я обнаружил , что
spinnerObject.setSelection(INDEX_OF_CATEGORY2)
должно произойти после того, как наsetAdapter
вызов; в противном случае первый элемент всегда является первоначальным выбором.Это подтверждается просмотром кода AbsSpinner для
setAdapter
.источник
Вот что я использую в Kotlin:
источник
indexOf
не удается сопоставить, то возвращается-1
, что, по-видимому, приводит к тому, что значение по умолчанию выбирается с помощьюspinner.setSelection
. Я в порядке с этим.В моем случае этот код спас мой день:
источник
Большую часть времени
spinner.setSelection(i); //i is 0 to (size-1) of adapter's size
не работает. Если вы просто позвонитеspinner.setSelection(i);
Это зависит от вашей логики.
Если представление полностью загружено, и вы хотите вызвать его из интерфейса, я предлагаю вам позвонить
Или, если вы хотите переключиться между жизненным циклом действия / фрагмента, позвоните так
источник
Я сделал несколько расширений
Spinner
для загрузки данных и отслеживания выбора элементов.Spinner.kt
Пример использования
источник
Это сработало для меня:
Это похоже на решение @ sberezin, но вызывает setSelection () в onStart ().
источник
У меня была такая же проблема со вчерашнего дня. К сожалению, первый элемент в списке массивов по умолчанию отображается в виджете счетчика. Оборотным путем было бы найти предыдущий выбранный элемент с каждым элементом в списке массивов и поменять его позицию с первым элементом. Вот код
источник