Android — android spinner


Android — Spinner

Spinner allows you to select an item from a drop down menu

For example. When you are using Gmail application you would get drop down menu as shown below, you need to select an item from a drop down menu.

Spinner Example

Example

This example demonstrates the category of computers, you need to select a category from the category.

To experiment with this example, you need to run this on an actual device on after developing the application according to the steps below.

Steps Description
1 You will use Android studio to create an Android application and name it as AndroidSpinnerExample under a package com.example.spinner.
2 Modify src/AndroidSpinnerExampleActivity.java file to create a simple list view with items which are showing as spinner items
3 Modify res/layout/activity_main.xml file to add respective XML code.
4 No need to define default string constants. Android studio takes care of default string constants at string.xml
5 Run the application and choose a running android device and install the application on it and verify the results.

Following is the content of the modified main activity file src/com.example.spinner/AndroidSpinnerExampleActivity.java.

Modify the content of res/layout/activity_main.xml to the following

Modify the res/values/string.xml to the following

This is the default AndroidManifest.xml

Let’s try to run your AndroidSpinnerExample application. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio, open one of your project’s activity files and click Run icon from the toolbar. Before starting your application,Android studio will display following window to select an option where you want to run your Android application.

If you click on spinner button, It will a drop down menu as shown below

Andro >

In Android, you can use “android.widget.Spinner” class to render a dropdown box selection list.

In this tutorial, we show you how to do the following tasks :

  1. Render a Spinner in XML, and load the selection items via XML file also.
  2. Render another Spinner in XML, and load the selection items via code dynamically.
  3. Attach a listener on Spinner, fire when user select a value in Spinner.
  4. Render and attach a listener on a normal button, fire when user click on it, and it will display selected value of Spinner.

P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.

1. List of Items in Spinner

Open “res/values/strings.xml” file, define the list of items that will display in Spinner (dropdown list).

2. Spinner (DropDown List)

Open “res/layout/main.xml” file, add two spinner components and a button.

  1. In “spinner1”, the “ android:entries ” represents the selection items in spinner.
  2. In “spinner2”, the selection items will be defined in code later.

3. Code Code


Read the code and also code’s comment, it should be self-explanatory.

4. Demo

Run the application.

1. Result, two spinners are displayed :

2. Select “France” from spinner1, item selection listener is fired :

3. Select “list2” from spinner2, and click on the submit button :

Android Spinner (Dropdown List) with Examples

In android, Spinner is a view which allow a user to select one value from the list of values. The spinner in android will behave same like dropdown list in other programming languages.

Generally, the android spinners will provide a quick way to select one item from the list of values and it will show a dropdown menu with a list of all values when we click or tap on it.

By default, the android spinner will show its currently selected value and by using Adapter we can bind the items to spinner object.

Following is the pictorial representation of using spinner in android applications.

We can populate our Spinner control with list of choices by defining an ArrayAdapter in our Activity file.

Generally, the Adapter pulls data from a sources such as an array or database and converts each item into a result view and that’s placed into the list.

Android Adapter

In android, Adapter will act as an intermediate between the data sources and adapter views such as ListView, Gridview to fill the data into adapter views. The adapter will hold the data and iterates through an items in data set and generate the views for each item in the list.

Generally, in android we have a different types of adapters available to fetch the data from different data sources to fill the data into adapter views, those are

Adapter Description
ArrayAdapter It will expects an Array or List as input.
CurosrAdapter It will accepts an instance of cursor as an input.
SimpleAdapter It will accepts a static data defined in the resources.
BaseAdapter It is a generic implementation for all three adapter types and it can be used for ListView, Gridview or Spinners based on our requirements

Now we will see how to create spinner or dropdownlist in android applications.

Create Android Spinner in XML Layout File

In android, we can create Spinner in XML layout file using element with different attributes like as shown below.

Populate Android Spinner with Values

To populate spinner with list of values, we need to specify spinner adapter, such as an ArrayAdapter in activity file like as shown below.

This is how we can define and bind data to Spinner control in android applications. Now we will see complete example of using spinner control android applications.

Android Spinner Example

Following is the example of defining a one Spinner control, one TextView control in RelativeLayout to show the list of user details in android application.

Create a new android application using android studio and give names as SpinnerExample. In case if you are not aware of creating an app in android studio check this article Android Hello World App.

Now open an activity_main.xml file from \res\layout path and write the code like as shown below


activity_main.xml

xml version= «1.0» encoding= «utf-8» ?>
RelativeLayout xmlns: android = «http://schemas.android.com/apk/res/android»
android :layout_w > «match_parent» android :layout_height= «match_parent» >
TextView
android : > «@+id/txtVw»
android :layout_w > «wrap_content»
android :layout_height= «wrap_content»
android :layout_marginLeft= «50dp»
android :layout_marginTop= «150dp»
android :text= «Select User:»
android :textStyle= «bold»
android :textSize= «15dp» />
Spinner
android : > «@+id/spinner1»
android :layout_w > «wrap_content»
android :layout_height= «wrap_content»
android :layout_alignBottom= «@+id/txtVw»
android :layout_toRightOf= «@+id/txtVw» />
RelativeLayout >

If you observe above code we created a one Spinner control and one TextView control in XML Layout file.

Once we are done with creation of layout with required controls, we need to load the XML layout resource from our activity onCreate() callback method, for that open main activity file MainActivity.java from \java\com.tutlane.spinnerexample path and write the code like as shown below.

MainActivity.java

package com.tutlane.spinnerexample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener <
String[] users = < "Suresh Dasari" , "Trishika Dasari" , "Rohini Alavala" , "Praveen Kumar" , "Madhav Sai" >;
@Override
protected void onCreate(Bundle savedInstanceState) <
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
Spinner spin = (Spinner) findViewById(R.id. spinner1 );
ArrayAdapter adapter = new ArrayAdapter ( this , android.R.layout. simple_spinner_item , users );
adapter.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item );
spin.setAdapter(adapter);
spin.setOnItemSelectedListener( this );
>
@Override
public void onItemSelected(AdapterView arg0, View arg1, int position, long id) <
Toast.makeText(getApplicationContext(), «Selected User: » + users [position] ,Toast. LENGTH_SHORT ).show();
>
@Override
public void onNothingSelected(AdapterView arg0) <
// TODO — Custom Code
>
>

If you observe above code we are calling our layout using setContentView method in the form of R.layout.layout_file_name in our activity file. Here our xml file name is activity_main.xml so we used file name activity_main and binding the list of values to Spinner control using ArrayAdapter.

Generally, during the launch of our activity, onCreate() callback method will be called by android framework to get the required layout for an activity.

Output of Android Spinner Example

When we run above example using android virtual device (AVD) we will get a result like as shown below.

If you observe above result, our spinner control is like dropdown list in other programming languages and we are able to get the selected user details in android application.

This is how we can use Spinner control in android applications to allow users to select one value from the list of values based on our requirements.

Как сделать Andro >

В Android я хочу использовать Spinner, который изначально (когда пользователь еще не сделал выбор) отображает текст «Выбрать один». Когда пользователь нажимает на счетчик, отображается список элементов, и пользователь выбирает один из параметров. После того, как пользователь сделал выбор, выбранный элемент отображается в Spinner вместо «Select One».

У меня есть следующий код для создания Spinner:

С помощью этого кода сначала отображается элемент «Один». Я мог бы просто добавить новый элемент «Выбрать один» к элементам, но затем «Выбрать один» также будет отображаться в раскрывающемся списке в качестве первого элемента, чего я не хочу.

Как я могу исправить эту проблему?

Вот общее решение, которое переопределяет представление Spinner . Он переопределяет setAdapter() чтобы установить начальную позицию в -1 и SpinnerAdapter предоставленный SpinnerAdapter чтобы отобразить строку приглашения для позиции меньше 0.

Это было протестировано на Android с 1.5 по 4.2, но покупатель остерегайтесь! Поскольку это решение основывается на отражении для вызова частного AdapterView.setNextSelectedPositionInt() и AdapterView.setSelectedPositionInt() , он не гарантирует работу в будущих обновлениях ОС. Скорее всего, это произойдет, но это отнюдь не гарантировано.

Обычно я бы не потворствовал чему-то подобному, но этот вопрос задавали достаточно времени, и кажется, что он достаточно разумно запросил, чтобы я решил опубликовать свое решение.

То, что вы можете сделать, это украсить ваш SpinnerAdapter тем, который представляет «Select Option …». Первоначально открывается Spinner для отображения с выбранным ничем.

Вот рабочий пример, протестированный для Android 2.3 и 4.0 (он не использует ничего в библиотеке совместимости, поэтому это должно быть хорошо на некоторое время). Поскольку это декоратор, нужно легко модифицировать существующий код, и он отлично работает с CursorLoader s , ( cursorAdapter курсор на завернутый cursorAdapter конечно …)

Существует ошибка Android, которая делает это немного сложнее для повторного использования представлений. (Таким образом, вы должны использовать setTag или что-то еще, чтобы обеспечить правильность convertView .) Spinner не поддерживает несколько типов просмотра

Примечания к коду: 2 конструктора

Это позволяет использовать стандартную подсказку или определять собственное «ничего не выбрано» в качестве первой строки, или и того, и другого, или ни одного. (Примечание. Некоторые темы показывают DropDown для Spinner вместо диалога. В раскрывающемся списке обычно не отображается приглашение)


Вы определяете макет для того, чтобы «выглядеть», как подсказка, например, серого цвета …

Использование стандартного приглашения (обратите внимание, что ничего не выбрано):

Или с подсказкой и чем-то динамичным (также не было подсказки):

Использование в приведенном выше примере

contact_spinner_row_nothing_selected.xml

NothingSelectedSpinnerAdapter.java

В итоге я использовал Button . Хотя Button не является Spinner , поведение легко настраивается.

Сначала создайте адаптер как обычно:

Обратите внимание, что я использую simple_spinner_dropdown_item как идентификатор макета. Это поможет улучшить внешний вид при создании диалогового окна предупреждения.

В обработчике onClick для моей кнопки у меня есть:

Я знаю, что у этого вопроса много ответа, но я нашел самый простой и простой способ сделать.

Это решение не зависит от уровня API, оно будет работать на всех уровнях API .

Идея состоит в том, чтобы установить последний элемент счетчика по умолчанию.

Элемент по последнему индексу должен быть вашим названием Spinner как «Выбрать страну»,

И при заполнении счетчика уменьшается количество элементов на one.ie // Count начинается с 1 до общего элемента.

Таким образом, ваш поток кода будет таким

Название Spinner Spinner Item

Во-первых, вас может заинтересовать атрибут prompt класса Spinner . См. Рисунок ниже, «Выбрать планету» – это приглашение, которое можно установить в XML с помощью andro .

Я собирался предложить подклассификацию Spinner , где вы могли бы поддерживать два адаптера внутри. Один адаптер с опцией «Выбрать один» и другой реальный адаптер (с фактическими параметрами), затем с помощью OnClickListener для переключения адаптеров перед отображением диалогового окна выбора. Однако, после попытки реализовать эту идею, я пришел к выводу, что вы не можете получать события OnClick для самого виджета.

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

Вам действительно нужно показать «Выбрать один»?

Этот код был протестирован и работает на Android 4.4

Я нашел это решение:

Просто измените массив [0] на «Выбрать один», а затем в onItemSelected, переименуйте его в «Один».

Не классное решение, но оно работает: D

API-интерфейс по умолчанию не задает намека на Spinner. Чтобы добавить его, нам нужно небольшое обходное решение с тем, что реализация небезопасности

У меня такая же проблема для счетчика, с пустым выбором, и я нашел лучшее решение. Посмотрите на этот простой код.


Здесь spinneradapter – небольшая настройка для массива. Это выглядит так:

Здесь много ответов, но я удивлен, что никто не предложил простое решение: поместите TextView поверх Spinner. Установите прослушиватель кликов на TextView, который скрывает TextView, показывает Spinner и вызывает spinner.performClick ().

Некоторая функция (программно добавляет вещи в адаптер)>

Теперь у вас есть пустой счетчик, и вы можете писать код, чтобы не открывать диалоговое окно, если оно пустое. Или они могут отступить. Но вы также заполняете его функцией или другим списком во время выполнения.

Я попробовал следующее. Возьмите кнопку и дайте ей клик. Изменяя фон кнопки, кажется, это прядильщик.

Объявить глобальные переменные alertdialog и значение по умолчанию.

Вы можете изменить его на текстовый вид и использовать его:

А затем определите свойство android:text .

Взгляните на приложение iosched для решения общего назначения, чтобы добавить элемент в начало списка. В частности, если вы используете CursorAdapter, посмотрите на TracksAdapter.java, который расширяет это определение, чтобы предоставить метод setHasAllItem и связанный с ним код для управления счетчиком списков, чтобы иметь дело с дополнительным элементом вверху.

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

У меня есть spinner на моем main.xml, а его id – @+id/spinner1

Это то, что я пишу в своей функции OnCreate:

Это не требует никакой реализации в классе.

Я думаю, что самый простой способ – создать фиктивный элемент в индексе 0, говорящий «выбрать один», а затем при сохранении, возможно, проверьте, что выбор не равен 0.

Так что это мой последний пример «олл-ин» для кнопки-поворота

В activity_my_form.xml

В strings.xml

В MyFormActivity.java

Наконец, я получил размер шрифта, который не может быть настроен ни одним из элементов, которые можно выбрать с помощью кнопки выбора элемента! Благодаря HRJ

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

Поэтому я помещаю элемент подсказки в начало списка. И скрыть первый элемент в раскрывающемся списке.

Установите нижний макет в @Override getDropDownView (), когда позиция равна 0, чтобы скрыть первую строку подсказки.

При расширении SpinnerAdapter вы переопределяете два метода View -producing, getView(int, View, ViewGroup) и getDropDownView(int, View, ViewGroup) . The first one supplies the View inserted into the Spinner itself; the second supplies the View in the drop-down list (as the name suggests). You can override the getView(. ) so that, until an item has been selected, it displays a TextView containing a prompt; then, when you detect an item has been selected, you change it to display a TextView corresponding to that.

I’d just use a RadioGroup with RadioButtons if you only have three choices, you can make them all unchecked at first.

None of the previously submitted answers really worked the way I wanted to solve this issue. To me the ideal solution would provide the “Select One” (or whatever initial text) when the spinner is first displayed. When the user taps the spinner, the initial text shouldn’t be a part of the drop down that is displayed.

To further complicate my particular situation, my spinner data is coming form a cursor that is loaded via the LoaderManager callbacks.


After considerable experimentation I came up with the following solution:

I handle this by using a button instead of a Spinner. I have the sample project up on GitHub.

In the project, i’m displaying both the Spinner and button to show that they indeed look identical. Except the button you can set the initial text to whatever you want.

Here’s what the activity looks like:

NOTE: Yes, I realize that this is dependent on the applied Theme and the look will be slightly different if using Theme.Holo. However, if you’re using one of the legacy themes such as Theme.Black, you’re good to go.

if you are facing this issue when your items are populates from database-cursor ,

the simplest solution that I found in this SO answer:

use UNION in your cursor adapter query and add the additional item with >

db.rawQuery(«SELECT iWorkerId as _id, nvLastName as name FROM Worker w UNION SELECT -1 as _id , » as name»,null);

if the item selected is -1, then it’s the default value. Otherwise it’s a record from the table.

Seems a banal solution but I usually put simply a TextView in the front of the spinner. The whole Xml looks like this. (hey guys, don’t shoot me, I know that some of you don’t like this kind of marriage):

Then I hide the TextView when an Item was selected. Obviously the background color of the TextView should be the same as the Spinner. Works on Android 4.0. Don’t know on older versions.

Да. Because the Spinner calls setOnItemSelectedListener at the beginning, the hiding of the textview could be a little bit tricky, but can be done this way:

for me it worked something like this. has the improvement that only changes the text in SOME options, not in all.

First i take the names of the spinner and create the arrayadapter with a customize view, but it doesn’t matter now, the key is override the getView, and inside change the values u need to change. In my case was only the first one, the rest i leave the original

here’s a simple one

I added my code to fix a little bug. That where no data retrieved..How to show the prompt text.

Here is my Trick…It works fine with me. !

Try to put your spinner in a Relative_layoutand align a Textview with your spinner and play with the visibility of the Textview (SHOW/HIDE) whenever the adapter of the spinner loaded or empty..Like this:

call this method after and before spinner adapter loaded and empty.

Consider There are N items to be selected.

After adding these N items, add the hint text as (N+1)th item.

Set the selected item to Nth position [(N+1)th item].

Android — android spinner

Add the spinner to your layout XML:

Add items to the spinner and listen for clicks:

You can add attributes to customize the view. Available attributes:


name type info
ms_arrow_tint color sets the color on the drop-down arrow
ms_hide_arrow boolean set to true to hide the arrow drawable
ms_background_color color set the background color for the spinner and drop-down
ms_background_selector integer set the background resource for the dropdown items
ms_text_color color set the text color
ms_dropdown_max_height dimension set the max height of the drop-down
ms_dropdown_height dimension set the height of the drop-down
ms_padding_top dimension set the top padding of the drop-down
ms_padding_left dimension set the left padding of the drop-down
ms_padding_bottom dimension set the bottom padding of the drop-down
ms_padding_right dimension set the right padding of the drop-down
ms_popup_padding_top dimension set the top padding of the drop-down items
ms_popup_padding_left dimension set the left padding of the drop-down items
ms_popup_padding_bottom dimension set the bottom padding of the drop-down items
ms_popup_padding_right dimension set the right padding of the drop-down items

Download the latest AAR or grab via Gradle:

ПРОГРАММИРОВАНИЕ НА ANDRO > 23.06.2020 admin

В нашем сегодняшнем уроке мы продолжим рассматривать возможности настраиваемого выпадающего списка (Custom Spinner) в Android Studio.

Давайте предположим, что нам необходимо сделать выпадающий список таким образом, чтобы в случаи, когда список развёрнут, то каждый пункт списка отображал бы полную информацию, а в случаи, когда какой-то пункт выбран, то отображалась бы краткая информация. Создайте новое приложение в Android Studio с пустым активити (Empty Activity), и начнём делать наш список. Список будет содержать автомобильные бренды, логотипы этих брендов и информацию о сайте производителя. Пусть в развёрнутом виде нам нужно отображать логотип, наименование бренда и ссылку на сайт, а когда пункт выбран, только логотип и наименование бренда. Создадим шаблон пункта выпадающего списка. Для этого перейдите к каталогу layout ресурсов проекта:

Нажмите на этом каталоге правой кнопкой мыши и в появившемся меню выберите New -> Layout resource file: Назовите его spinner_item: Отредактируйте содержимое spinner_item.xml в соответствии со следующим текстом:

В той же папке layout, где был создан spinner_item.xml аналогичным образом создайте шаблон для выбранного пункта списка и назовите его selected_item.xml. Отредактируйте содержимое selected_item.xml в соответствии со следующим текстом:

Теперь перейдите к файлу activity_main.xml, который расположен в том же каталоге layout и добавьте туда элемент Spinner. Должно получиться следующее:

После всего этого нам нужно создать класс, который будет содержать в себе информацию о каждом отдельно взятом бренде, т.е. наименование бренда, информацию о сайте и логотип. Для этого перейдём к каталогу, в котором у нас расположен MainActivity и создадим в нём подкаталог, к котором разместим наш класс: Нажмём на нём правой кнопкой мыши. В появившемся меню выберем New -> Package : Назовите новый каталог Additional >: Нажмите на вновь созданный каталог Additional > правой кнопкой мыши и выберите New -> Java >: Назовите новый класс AutoBrand >:

Отредактируйте его код в соответствии со следующим текстом:

В том же каталоге, где был создан каталог Additional > создайте ещё один каталог и назовите его Adapters . Должно получиться так: Теперь создадим адаптер для выпадающего списка. Нажмите на каталоге Adapters правой кнопкой мыши и выберите New -> Java > (Все действия аналогичны тем, которые мы делали при создании класса AutoBrand >). Назовите этот класс AutoBrandsSpinnerAdapter . Отредактируйте его код в соответствии со следующим текстом: Теперь нам понадобятся три графических png файла, который будут содержать логотипы брендов — toyota.png, nissan.png и bmw.png. Их нужно просто скопировать в каталог drawable проекта:

Взять архив с логотипами можно здесь: LogoImg

Теперь перейдите к MainActivity и отредактируйте его в соответствии со следующим кодом:

How to customize a Spinner in Andro > Ask Question

I want to add a custom height to the dropdown of a Spinner , say 30dp, and I want to hide the dividers of the dropdown list of Spinner .

So far I tried to implement following style to the Spinner :

and the code of my spinner is :

But nothing seems to be working.

5 Answers 5

Create a custom adapter with a custom layout for your spinner.

In styles add your custom dimensions and height as per your requirement.

You can create fully custom spinner design like as

Step1: In drawable folder make background.xml for a border of the spinner.

Step2: for layout design of spinner use this drop-down icon or any image drop.png

Finally looks like below image and it is everywhere clickable in round area and no need to write click Lister for imageView.

Step3: For drop-down design, remove the line from Dropdown ListView and change the background color, Create custom adapter like as


In layout folder create R.layout.spinner_text.xml

In layout folder create simple_spinner_dropdown.xml

In styles, you can add custom dimensions and height as per your requirement.

Andro > Anupam Chugh — 11 Comments

This tutorial will give you a hands on experience in using Android Spinner as a drop down menu, passing data using android bundle and showing popup notification using android toast.

We will create an android application that consists of a simple spinner that allows selecting an item from a drop down list. We will display static data in the spinner. Selecting an item from spinner would display a toast message.

To pass data in the form of bundles between activities, we’ll use a button to perform an intent and display the data passed to the next screen.

Table of Contents

Android Spinner

Android Spinner is just a drop down list similar to what’s seen in other programming languages such as in HTML pages.

In Android, Spinner is used to select one value from a set of values. In the default state, a spinner shows its currently selected value. Touching the spinner displays a drop down menu with all other available values, from which the user can select a new one.

Android spinner is associated with AdapterView . So we need to set the adapter class with the Spinner.

Android Drop Down List

Following xml file shows the layout of a typical spinner in android which consists of a text label and a spinner element tag.

Following snippet shows how to use a spinner in the activity class.

Let’s develop an application where we pass the selected value from the Spinner onto the next screen using Bundles and display a Toast message of the selected value at the same time.

Android Spinner Example Project Structure

Below image shows the android studio project for spinner example.

Let’s start with the layout of the MainActivity class. We just need to add Button to the basic_spinner.xml file.

The layout of the SecondActivity is as follows:

Here is the Android Manifest file.

The MainActivity and SecondActivity java classes are defined as follows.

In the above code, we’ve displayed a toast when an item from the spinner dropdown menu is selected. On button click we pass the selected spinner item as a string value to the next activity using android bundle. Then the data is retrieved from the bundle and displayed in a TextView. Quick easy and simple, isn’t it?

The screenshots of the app are shown below. I am running it on one of the emulators.

The first screen shows the drop down list contents when the Spinner is opened.

After an item is selected, Toast notification message appears for some time.

After sometime toast notification disappears as shown in below image. It doesn’t stop us in clicking the next button.


Finally, in the second screen, the selected item from the dropdown list is retrieved using Bundles and displayed in the TextView.

Below is a sample run of our android spinner example application in emulator.

That’s all for now, we will look into Android ListView in next post. You can download Android Spinner, Bundle and Toast example project from below link.

Andro >by editorial team ·

Topic of today is Android Spinner Tutorial With Example For Beginners.

In android development, spinner widget gives us facility to create a drop down menu with multiple options.

User can select any option from this drop down menu and we can track the selection of the user and can write logic with selected option.

Spinner allows user to select only one value. Spinner doe not support multiple selection from the drop down list.

In the default state, a spinner shows its currently selected value. Touching the spinner displays a drop down menu with all other available values, from which the user can select a new one.

Just like ListView or RecyclerView, spinner is also associated with the Adapter. Hence, we need to attach the adapter class to the spinner to populate it with various options.

Methods to create spinner

Generally, developers create spinner with one of the following method.

  1. Using Array Adapter
  2. Or with the help of the Custom Adapter

When you want to develop very basic spinner with only text options, you should use the first method.

You can use second method when you want to customize your spinner heavily. For example, you want to add images along with the text in the spinner.

Functions Of Spinner

Android provides some predefined methods which helps developers to make spinner within no time.

1. setAdapter(SpinnerAdapter adapter)

Using this method we can set the SpinnerAdapter to our Spinner.

Adapter will provide data to the spinner.

2. setGravity(int gravity)

Describes how the selected item view is positioned.

3. setEnabled(boolean enabled)

Set the enabled state of this view.

4. onTouchEvent(MotionEvent event)


Implement this method to handle touch screen motion events.

5. performClick()

Call this view’s OnClickListener, if it is defined.

6. getDropDownWidth()

Get the configured width of the spinner’s popup window of choices in pixels.

7. getPopupBackground()

Get the background drawable for the spinner’s popup window of choices.

8. setDropDownWidth(int pixels)

Set the width of the spinner’s popup window of choices in pixels.

Example of Spinners

Let us create two examples of spinner in the android studio.

First example will contain spinner with text options. It will be a simple example where we will use array adapter.

In the second example, we will add image along with the text in every drop down option of spinner.

So let’s make first example step by step.

Step 1. XML file writings

First of all, create a new project in android studio.

ПРОГРАММИРОВАНИЕ НА ANDRO > 23.06.2020 admin

В нашем сегодняшнем уроке мы продолжим рассматривать возможности настраиваемого выпадающего списка (Custom Spinner) в Android Studio.

Давайте предположим, что нам необходимо сделать выпадающий список таким образом, чтобы в случаи, когда список развёрнут, то каждый пункт списка отображал бы полную информацию, а в случаи, когда какой-то пункт выбран, то отображалась бы краткая информация. Создайте новое приложение в Android Studio с пустым активити (Empty Activity), и начнём делать наш список. Список будет содержать автомобильные бренды, логотипы этих брендов и информацию о сайте производителя. Пусть в развёрнутом виде нам нужно отображать логотип, наименование бренда и ссылку на сайт, а когда пункт выбран, только логотип и наименование бренда. Создадим шаблон пункта выпадающего списка. Для этого перейдите к каталогу layout ресурсов проекта:

Нажмите на этом каталоге правой кнопкой мыши и в появившемся меню выберите New -> Layout resource file: Назовите его spinner_item: Отредактируйте содержимое spinner_item.xml в соответствии со следующим текстом:

В той же папке layout, где был создан spinner_item.xml аналогичным образом создайте шаблон для выбранного пункта списка и назовите его selected_item.xml. Отредактируйте содержимое selected_item.xml в соответствии со следующим текстом:

Теперь перейдите к файлу activity_main.xml, который расположен в том же каталоге layout и добавьте туда элемент Spinner. Должно получиться следующее:

После всего этого нам нужно создать класс, который будет содержать в себе информацию о каждом отдельно взятом бренде, т.е. наименование бренда, информацию о сайте и логотип. Для этого перейдём к каталогу, в котором у нас расположен MainActivity и создадим в нём подкаталог, к котором разместим наш класс: Нажмём на нём правой кнопкой мыши. В появившемся меню выберем New -> Package : Назовите новый каталог Additional >: Нажмите на вновь созданный каталог Additional > правой кнопкой мыши и выберите New -> Java >: Назовите новый класс AutoBrand >:

Отредактируйте его код в соответствии со следующим текстом:

В том же каталоге, где был создан каталог Additional > создайте ещё один каталог и назовите его Adapters . Должно получиться так: Теперь создадим адаптер для выпадающего списка. Нажмите на каталоге Adapters правой кнопкой мыши и выберите New -> Java > (Все действия аналогичны тем, которые мы делали при создании класса AutoBrand >). Назовите этот класс AutoBrandsSpinnerAdapter . Отредактируйте его код в соответствии со следующим текстом: Теперь нам понадобятся три графических png файла, который будут содержать логотипы брендов — toyota.png, nissan.png и bmw.png. Их нужно просто скопировать в каталог drawable проекта:

Взять архив с логотипами можно здесь: LogoImg

Теперь перейдите к MainActivity и отредактируйте его в соответствии со следующим кодом:

Цукерберг рекомендует:  Javascript книги - Книги по JS
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих