Выпадающий список

Выпадающий список предоставляет простой способ выбора одного значения из набора. В неактивном состоянии показывает выбранное значение. Нажатие на список приводит к его раскрытию, позволяя пользователю выбрать новое значение.

Вы можете добавить выпадающий список, используя объект типа Spinner. В XML разметке используется элемент <Spinner>:

Для заполнения списка используется специальный адаптер типа SpinnerAdapter

Заполнение выпадающего списка

Значения списка могут быть взяты из любого источника, но должны быть предоставлены адаптером типа SpinnerAdapter, например ArrayAdapter, если значения хранятся в массиве или CursorAdapter, если значения хранятся в базе данных.

Создадим, к примеру, список значений в виде массива строка, хранящийся в файле ресурса:

Далее используем ArrayAdapter для заполнения:

Метод createFromResource() позволяет создать адаптер ArrayAdapter из строкового массива. Третий аргумент метода это ресурс разметки, который указывает как выбранное значение отображается в списке. Разметка simple_spinner_layout предоставляется платформой и имеет стандартный вид. Вы можете ее использовать, если не хотите создавать собственный макет.

Затем необходимо вызвать метод setDropDownViewResource(int), чтобы указать разметку, которую адаптер должен использовать для отображения списка значений (simple_spinner_dropdown_item это еще один стандартный макет, предоставляемый платформой).

Вызовите метод setAdapter() для того, чтобы применить адаптер к выпадающему списку.

Обработка выбора значения

Когда пользователь выбирает значение из списка, объект Spinner получает событие on-item-selected.

Чтобы обработать событие, реализуйте интерфейс AdapterView.OnItemSelectedListener и соответствующий метод обратного вызова onItemSelected(). Например:

Интерфейс AdapterView.OnItemSelectedListener требует реализации двух методов onItemSelected() и onNothingSelected().

Затем необходимо указать реализацию интерфейса с помощью метода setOnItemSelectedListener():

Если вы реализуете интерфейс в вашем явлении (Activity) или фрагменте (Fragment), вы должны передать в качестве экземпляра интерфейса объект this (как в примере выше).

Добавить комментарий