Friday, August 14, 2015

How to set prompt text in a Spinner in Android

Show Prompt Text In A Spinner
Spinner is a very popular widget for android app developers. The Spinner widget is a single selection list widget. The Spinner shows an item at a time in its visible area. Other available items are visible inside a drop-down menu or a dialog view depending on Spinner mode. The Spinner widget display mode may be a dropdown or a dialog. The dropdown mode display Spinner hidden items inside a drop-down menu and the dialog mode display Spinner items inside a dialog window.

This android app development tutorial will demonstrate to you how can you set a prompt text in a Spinner widget. Spinner widget’s dialog display mode only allows us to set a prompt text for Spinner itself.

In the first step, we will add a Spinner widget to our XML layout file by using the Spinner tag and its attributes. Next, we will populate a String array by values. After it, we will convert the String array to an array list. We make an array adapter instance by using the array list. We data-bind the Spinner widget with an array adapter. The array adapter object will populate the Spinner widget with available items.

Now is the time to set a prompt text for the Spinner widget. To achieve this we have to set Spinner display mode to ‘dialog’ inside XML layout by Spinner ‘spinnerMode’ attribute. After that, we will call the Spinner setPrompt() method to set our desired prompt text for the Spinner element in the java or kotlin file. We can simply pass some text inside the setPrompt() method to show a prompt text in a Spinner dialog window.
MainActivity.java

package com.cfsuman.androidtutorials;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Get the widgets reference from XML layout
        Spinner spinner = findViewById(R.id.spinner);


        // Initializing a String Array
        String[] plants = new String[]{
                "Laceflower",
                "California sycamore",
                "Mountain mahogany",
                "Butterfly weed",
                "Carrot weed"
        };


        // Convert array to a list
        List<String> plantsList = new ArrayList<>
                (Arrays.asList(plants));


        // Initializing an ArrayAdapter
        ArrayAdapter<String> spinnerArrayAdapter
                = new ArrayAdapter<String>(
                this,
                android.R.layout.simple_dropdown_item_1line,
                plantsList
        );


        // Set the drop down view resource
        spinnerArrayAdapter.setDropDownViewResource(
                android.R.layout.simple_dropdown_item_1line
        );


        // Set the spinner prompt text
        spinner.setPrompt("Select an item");


        // Finally, data bind the spinner object with adapter
        spinner.setAdapter(spinnerArrayAdapter);
    }
}
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#DCDCDC"
    android:padding="64dp">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:spinnerMode="dialog"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>