- Spinner Android Studio
- Описание Spinner Android Studio
- Как применить адаптер
- Как выглядит в закрытом виде
- Демонстрация в раскрытом виде
- Извлечение информации: как определить пункт, выбранный пользователем
- Предупреждение компонента об изменении данных
- Как отыскать координаты по словам
- Точная настройка списков
- Spinner_dropdown_item.xml
- Как изменить цвета и размеры шрифта 1-й строки
- Запрет выбора строки во время запуска
- CustomAdapter.java
- Урок 56. Spinner – выпадающий список
- Spinner
- Дополнительные материалы
Spinner Android Studio
Выпадающие списки создаются программистами для предоставления пользователю возможности выбора одного пункта или нескольких. При создании приложений для ОС Андроид применяется Spinner Android Studio.
Платформа для разработки приложений для ОС Андроид позволяет создавать списки подобно другим IDE. О том, что такое Android Studio, подробности реализации возможностей Спиннер можно узнать из краткого обзора процедуры.
Описание Spinner Android Studio
В Android Studio выпадающий список, доступный в разделе «Виджеты», напоминает стандартные перечни, применяемые в операционных системах.
Будучи закрытым, он демонстрирует единственную (первую по умолчанию) строку, а в момент активации его пользователем выводится весь перечень элементов, из которых юзер может выбирать.
Рекомендуется начать с простых способов применения Spinner. Если добавить элемент на дисплей, то отобразится полоса со строчкой Item1. Изменения производятся при помощи правки кода, но допустимо использование XML. Примеры Spinner Android Studio:
- Барсик
- Мурзик
- Васька
- Рыжик
добавление в строковый файл ресурсов (strings.xml) фрагментов матрицы:
Правим атрибут Android: entries – следует сослаться на матрицу, и Spinner заполнится информацией. Теперь можно активировать проект и понаблюдать за результатом.
Если требуется из самого приложения узнать информацию о том, какой пункт выбрали в Спиннере, лучше применить следующий код, отвечающий на активацию кнопки:
Spinner spinner=(Spinner) findViewByld (R.id.spinner); String selected=spinner.getSelectedItem ().toString(); Toast.makeText(getApplicationContext(), selected, Toast.LEIGHT_SHORT).show();
Если требуется не сам текст, а сведения о номере строчки, то проще применить getSelectedItemPosition()
При необходимости получения выбранного пункта в момент активации, рекомендуется функция «setOnItemSelectedListener()».
Как применить адаптер
Spinner использует адаптеры информации для обмена данными из массива со строчками исходного списка. Чтобы выгрузить сведения требуется:
Как выглядит в закрытом виде
Пример списка можно наблюдать на рисунке до его открытия.
Демонстрация в раскрытом виде
На изображении виден пример списка после открытия его пользователем.
Информацию в закрытом и раскрытом видах Спиннер будет отображать различными способами. Следовательно, требуется делать шаблоны для двух вариантов.
«Андроид» предоставляет свои возможности для Spinner, которые могут применяться программистами. Практика: в наличии ресурс android.R.layout.simple_spinner_item для формирования представления каждой строчки нашего списка. Тогда ресурс android.R.layout.simple_spinner_dropdown_item будет служить образцом для раскрывающегося списка. В Android Studio spinner заполнить созданную строковую матрицу можно с помощью кода.
Пример загрузки строковой матрицы с наименованием «animals» в исходный экземпляр «ArrayAdapter», применение createFromResource():
- Кот
- Кошка
- Котёнок
- Животное
Если не проводилось изменений в коде, то будет выведен 1-й элемент нашего списка. А при использовании «setSelection()» программист сможет поставить требуемый элемент (default) если укажет значение индекса ресурса в скобках.
Извлечение информации: как определить пункт, выбранный пользователем
Как понять, какой пункт активировал пользователь, как использовать эти данные? Требуется получить информацию о том, какую строчку выбрал человек, для этого применяется «setOnItemSelectedListener()» и «onItemSelected()» класса AdapterView.OnItemSelectedListener:
//Получаем экземпляр элемента Spinner
final Spinner spinner=(Spinner)findViewByld (R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.animals, android.R.layouts.simple_spinner_item); adapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
Предупреждение компонента об изменении данных
Если разработчик произведёт изменения состава исходного списка, требуется передать обновлённую информацию Spinner. Специально для этого существует методика адаптера notifyDataSetChanged().
Как отыскать координаты по словам
При необходимости узнать, где расположены слова, требуется получить адаптер с применением методики getAdapter().
Точная настройка списков
Android Studio разрешает изменять фоновое изображение, однако нельзя устанавливать цвета или размеры букв текстовой информации списков.
android.R.layout.simple_spinner_item и android.R.layout.simple_spinner_dropdown_item.
Пример создания своей разметки с пиктограммами. В каталоге «res/layout» следует создать файл с названием «row.xml».
Теперь в листинге требуется поменять пару строчек на одну.
В рассматриваемом проекте применяется единственный главный файл. При этом допускается создание двух шаблонов для разных типов (закрытых или раскрытых). Пример использования.
Spinner_dropdown_item.xml
Как использовать возможность установки собственной пиктограммы для отдельных пунктов. Нужно объявить новый класс, который будет базироваться на ArrayAdapter, после чего задача становится легко реализуемой. Результат: возле строчек с двумя днями недели появятся символы кошачьей лапы.
Как изменить цвета и размеры шрифта 1-й строки
Демонстрация программного изменения установок цветовой гаммы. И размеров шрифтов для 1-й строки пункта в закрытом виде.
Запрет выбора строки во время запуска
Пример: требуется, чтобы во время запуска не показывался первый пункт исходного списка (default). Самым удачным решением этой проблемы будет добавление 1-м элементом пустой строчки либо текста «Выберите. ». Применяют и другой вариант.
CustomAdapter.java
В старых версиях ОС «Андроид» для компонентов Spinner допускалось выведение заголовков с использованием «setPrompt()» , а также «setPromptId()». Мало кто это использует, хотя для совместимости применение методики допустимо.
У этого компонента можно определить опцию android:spinnerMode. Если поставить настройку «dialog», то при активации списка пользователь увидит затемнение основного фона дисплея.
В Android Studio выпадающий список часто используется в приложениях. Применение Spinner не считается проблемной задачей и легко реализуется в программировании приведёнными способами.
Урок 56. Spinner – выпадающий список
Многовато уроков получилось про адаптеры и списки. Я изначально хотел буквально пару примеров показать, но чето затянуло и расписал чуть ли не все существующие адаптеры ) Напоследок сделаем пару полезных примеров, где еще используются адаптеры. В этом небольшом уроке рассмотрим Spinner.
Spinner – это выпадающий список, позволяющий выбрать одно значение. Он позволяет сэкономить место на экране. Я думаю, все встречали его не только в Android, но и в других языках программирования.
Project name: P0561_Spinner
Build Target: Android 2.3.3
Application name: Spinner
Package name: ru.startandroid.develop.p0561spinner
Create Activity: MainActivity
В экран main.xml поместим Spinner:
Код MainActivity.java:
Обработчик выбора элемента из списка присваивается методом setOnItemSelectedListener. Будем выводить на экран позицию выбранного элемента.
Все сохраним и запустим. Нажмем на Spinner.
Виден заголовок Title и выделен элемент с позицией 2. Выберем пункт four.
Обработчик показал, что выделили пункт с позицией 3.
Чтобы определить, какой элемент выделен сейчас, используйте spinner.getSelectedItemPosition(). Чтобы получить текст этого элемента можно сразу выполнять spinner.getSelectedItem().toString().
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Compose, Kotlin, RxJava, Dagger, Тестирование, Performance
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
Spinner
Spinner обеспечивает быстрый способ выбора одного значения из набора. В состоянии по умолчанию спиннер отображает текущее выбранное значение. Когда пользователь нажимает на спиннер, появляется выпадающее меню со всеми другими значениями, из которых пользователь может выбрать новый.
Чтобы добавить Spinner, нужно для начала определить его в XML.
Затем в Spinner нужно загрузить значения, между которыми будет происходить выбор. Сделать это можно через XML. если значения уже определены заранее, либо программно.
- Добавление через XML
Если варианты значений для спиннера заранее определны, вы можете создать строковый массив, определённый в ресурсах. В этом случае в папке res/values нужно открыть файл strings.xml и добавить в него с нужными значениями.
- Первая запись
- Вторая запись
- Третья запись
Затем в коде разметки у спиннеру нужно добавить атрибут android:entries, передав в значение созданный массив.
Spinner spinner = findViewById(R.id.spinner); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);
По умолчанию выбирается первый элемент в массиве, однако это можно изменить программно с помощью метода setSelection(), в аргументы которого нужно передать позицию элемента в массиве.
Если вам нужно узнать текущий выбранный элемент и его позицию, вы можете воспользоваться методами getSelectedItem() и getSelectedItemPosition() соответственно.
Spinner spinner = findViewById(R.id.spinner); Toast.makeText(this, "Запись - " + spinner.getSelectedItem().toString() + "\nПозиция - " + spinner.getSelectedItemPosition(), Toast.LENGTH_LONG).show();
К спиннеру можно привязать слушатель, который будет принимать события при выборе пользователем какого-либо из элементов в списке. Для этого нужно воспользоваться методом setOnItemSelectedListener().
Spinner spinner = findViewById(R.id.spinner); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() < @Override public void onItemSelected(AdapterViewadapterView, View view, int i, long l) < >@Override public void onNothingSelected(AdapterView adapterView) < >>);
Здесь нужно переопределить методы onItemSelected(), принимающий событие при выборе элемента, и onNothingSelected(), принимающий событие когда ничего не выбрано. Если второй метод вам не нужен, просто оставьте его пустым. В onItemSelected() можно выполнять необходимые действия при выборе элемента в списке. Узнать, какой конкретно элемент был выбран и на какой позиции, можно узнать следующим образом:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() < @Override public void onItemSelected(AdapterViewadapterView, View view, int i, long l) < Toast.makeText(getApplicationContext(), "Запись - " + adapterView.getAdapter().getItem(i).toString() + "\nПозиция - " + i, Toast.LENGTH_SHORT).show(); > @Override public void onNothingSelected(AdapterView adapterView) < >>);