Android Spinner in Kotlin
Android Spinner is a view that displays one child at a time and when user clicks on it, it lets the user pick among multiple values.
In this tutorial, we will learn how to create a Spinner in layout file, and how to set listener for the Spinner to serve user actions like clicking on the Spinner, selecting a value from Spinner, etc.
Code – Android Spinner
The following GIF shows how an Android Spinner looks, and how user could interact with it.
Android Spinner Code
A quick code snippet to use Android Spinner in layout and Kotlin file is as shown in the following respectively.
<Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
import android.view.View import android.widget.* class MainActivity : /** Other Classes, */AdapterView.OnItemSelectedListener { var list_of_items = arrayOf("Item 1", "Item 2", "Item 3") override fun onCreate(savedInstanceState: Bundle?) { spinner!!.setOnItemSelectedListener(this) // Create an ArrayAdapter using a simple spinner layout and languages array val aa = ArrayAdapter(this, android.R.layout.simple_spinner_item, list_of_items) // Set layout to use when the list of choices appear aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // Set Adapter to Spinner spinner!!.setAdapter(aa) } override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id: Long) { // use position to know the selected item } override fun onNothingSelected(arg0: AdapterView<*>) { } }
By default, the first element of the specified list is selected in the Spinner.
Following is a step by step guide of what is happening in the above code snippet to use Spinner
Step 1: Create a Spinner in layout file.
<Spinner android:id="@+id/spinner_sample" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
Step 2: Add AdapterView.OnItemSelectedListener to the interface list of your Activity.
class MainActivity : /** Other Classes, */AdapterView.OnItemSelectedListener { }
Step 3: Prepare an array of elements to be shown in Spinner view.
var list_of_items = arrayOf("Item 1", "Item 2", "Item 3")
Step 4: Set setOnItemSelectedListener to the Spinner.
spinner!!.setOnItemSelectedListener(this)
Step 5: Create an ArrayAdapter with the list of items and default layouts.
val array_adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, list_of_items) array_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
Step 6: Set ArrayAdapter to Spinner.
spinner!!.setAdapter(array_adapter)
Step 7: We have to override the following three methods of AdapterView.OnItemSelectedListener.
override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id: Long) { textView_msg!!.text = "Selected : "+languages[position] } override fun onNothingSelected(arg0: AdapterView<*>) { }
Example – Android Spinner
Following are the details of the Android Application we created for this example.
Application Name | SpinnerExample |
Company name | tutorialkart.com |
Minimum SDK | API 21: Android 5.0 (Lollipop) |
Activity | Empty Activity |
You may keep rest of the values as default and create Android Application with Kotlin Support.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context="com.tutorialkart.spinnerexample.MainActivity"> <TextView android:id="@+id/msg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25dp" android:padding="20dp"/> <Spinner android:id="@+id/spinner_sample" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
MainActivity.kt
package com.tutorialkart.spinnerexample import android.support.v7.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* import android.view.View import android.widget.* class MainActivity : AppCompatActivity(),AdapterView.OnItemSelectedListener { var languages = arrayOf("English", "French", "Spanish", "Hindi", "Russian", "Telugu", "Chinese", "German", "Portuguese", "Arabic", "Dutch", "Urdu", "Italian", "Tamil", "Persian", "Turkish", "Other") var spinner:Spinner? = null var textView_msg:TextView? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textView_msg = this.msg spinner = this.spinner_sample spinner!!.setOnItemSelectedListener(this) // Create an ArrayAdapter using a simple spinner layout and languages array val aa = ArrayAdapter(this, android.R.layout.simple_spinner_item, languages) // Set layout to use when the list of choices appear aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // Set Adapter to Spinner spinner!!.setAdapter(aa) } override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id: Long) { textView_msg!!.text = "Selected : "+languages[position] } override fun onNothingSelected(arg0: AdapterView<*>) { } }
Output
Conclusion
In this Android Tutorial : Android Spinner – Kotlin Example, we have learnt to use Spinner with an example Android Application.