Как использовать Android Spinner в виде раскрывающегося списка

Мне потребовалось немало времени, чтобы разобраться в Android Spinner. После нескольких неудачных попыток реализации и после прочтения многих вопросов, частично похожих на мои, но без удовлетворительных ответов , а некоторые вообще без ответов, например здесь и здесь , я наконец понял, что «счетчик» в Android не означает то же самое, что «выпадающий список» в настольных приложениях или выбор в HTML. Однако то, что нужно моему приложению (и я предполагаю, что приложениям всех других плакатов, вопросы которых аналогичны), - это то, что работает как раскрывающийся список, а не как счетчик.

Мои две проблемы связаны с тем, что я сначала считал идиосинхразией OnItemSelectedListener (я видел их как отдельные вопросы на этом сайте, но не как один):

  1. Первоначальный выбор первого элемента списка запускается автоматически без взаимодействие пользователя.
  2. Когда уже выбранный элемент снова выбирается пользователем, он игнорируется.

Теперь я понимаю, что, если подумать, это имеет смысл, чтобы это произошло на счетчике - он должен начинаться с выбранного значения по умолчанию, и вы вращаете его только для изменения этого значения. , чтобы не «повторно выбирать» значение - документация фактически говорит: «Этот обратный вызов вызывается только тогда, когда вновь выбранная позиция отличается от ранее выбранной позиции». И я видел ответов, в которых предлагалось установить флаг , чтобы игнорировать первый автоматический выбор - думаю, я мог бы смириться с этим, если бы не было другого пути.

Но поскольку мне действительно нужен раскрывающийся список, который должен вести себя как раскрывающийся список (и как пользователи могут и должны ожидать), мне нужно что-то вроде Spinner, который ведет себя как раскрывающийся список, как поле со списком. Меня не интересует какой-либо автоматический предварительный выбор (который должен происходить без запуска моего слушателя), и я хочу знать о каждом выборе , даже если он такой же, как и раньше (в конце концов, пользователь снова выбрал тот же элемент).

Итак ...есть ли что-то в Android, что может это сделать, или какой-то обходной путь, чтобы Spinner вел себя как раскрывающийся список? Если есть вопрос, подобный этому, на этом сайте, который я не нашел и на который есть удовлетворительный ответ, пожалуйста, дайте мне знать (в этом случае я искренне извиняюсь за повторение вопроса).

20
задан Community 23 May 2017 в 11:45
поделиться