Android Tutorial

Software Setup and Configuration

Android Studio

File Structure

Components

Core Topics

Layout

View

Button

Intent and Intent Filters

Toast

RecyclerView

Fragments

Adapters

Other UI Component

Image Loading Libraries

Date and Time

Material Design

Bars

Working with Google Maps

Chart

Animation

Database

Advance Android

Jetpack

Architecture

App Publish

App Monetization

Spinner in Android with Example

A Spinner in Android is a UI component that allows users to select one value from a set. It's similar to the dropdown menu in other platforms. Here's how you can create and use a Spinner in Android:

1. Layout:

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

2. Kotlin Code:

import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Spinner
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val spinner: Spinner = findViewById(R.id.spinner)
        // Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter.createFromResource(
            this,
            R.array.planets_array,
            android.R.layout.simple_spinner_item
        ).also { adapter ->
            // Specify the layout to use when the list of choices appears
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
            // Apply the adapter to the spinner
            spinner.adapter = adapter
        }

        spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
                val selectedItem = parent.getItemAtPosition(position).toString()
                Toast.makeText(applicationContext, "Selected: $selectedItem", Toast.LENGTH_SHORT).show()
            }

            override fun onNothingSelected(parent: AdapterView<*>) {
                // Another interface callback
            }
        }
    }
}

3. Resources:

res/values/strings.xml:

<resources>
    <string name="app_name">SpinnerDemo</string>

    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>

Here's a breakdown of the code:

  • A Spinner widget is defined in the XML layout.

  • In the Kotlin code, an ArrayAdapter is created using an array of planet names. This adapter is then applied to the Spinner.

  • An onItemSelectedListener is set on the Spinner to listen for item selections. When an item is selected, a toast message displays the selected item.

That's it! This example provides you with a basic spinner in Android that allows users to select a planet from a dropdown list.

  1. Implementing Spinner in Android example code:

    • Description: Introduces the basic implementation of a Spinner, a dropdown selection component in Android.

    • Example Code (XML/Java):

      <Spinner
          android:id="@+id/spinner"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"/>
      
      Spinner spinner = findViewById(R.id.spinner);
      // Set adapter and handle item selection
      
  2. Customizing Spinner appearance in Android:

    • Description: Customizes the appearance of the Spinner, including text size, color, and background.
    • Example Code (XML):
      <Spinner
          android:id="@+id/customSpinner"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textSize="18sp"
          android:textColor="#FF4081"
          android:background="@drawable/custom_spinner_background"/>
      
  3. Populating Spinner dynamically in Android:

    • Description: Dynamically populates the Spinner with data in code.
    • Example Code (Java):
      Spinner dynamicSpinner = findViewById(R.id.dynamicSpinner);
      List<String> dynamicData = Arrays.asList("Option 1", "Option 2", "Option 3");
      ArrayAdapter<String> dynamicAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dynamicData);
      dynamicAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      dynamicSpinner.setAdapter(dynamicAdapter);
      
  4. Spinner with ArrayAdapter in Android:

    • Description: Uses ArrayAdapter to bind data to the Spinner.
    • Example Code (Java):
      Spinner arrayAdapterSpinner = findViewById(R.id.arrayAdapterSpinner);
      ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item);
      arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      arrayAdapterSpinner.setAdapter(arrayAdapter);
      
  5. Spinner with custom adapter in Android:

    • Description: Utilizes a custom adapter to display complex data in the Spinner.
    • Example Code (Java):
      Spinner customAdapterSpinner = findViewById(R.id.customAdapterSpinner);
      CustomSpinnerAdapter customAdapter = new CustomSpinnerAdapter(this, customDataList);
      customAdapterSpinner.setAdapter(customAdapter);
      
  6. Handling item selection events in Spinner Android:

    • Description: Implements event handling for item selection in the Spinner.
    • Example Code (Java):
      Spinner selectionSpinner = findViewById(R.id.selectionSpinner);
      selectionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
          @Override
          public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
              // Handle item selection
          }
      
          @Override
          public void onNothingSelected(AdapterView<?> parentView) {
              // Handle no selection
          }
      });
      
  7. Spinner with images in Android example:

    • Description: Enhances the Spinner by displaying images alongside text.
    • Example Code (Java):
      Spinner imageSpinner = findViewById(R.id.imageSpinner);
      ImageSpinnerAdapter imageAdapter = new ImageSpinnerAdapter(this, imageList);
      imageSpinner.setAdapter(imageAdapter);
      
  8. Spinner with data binding in Android:

    • Description: Integrates data binding to simplify the binding of data between the Spinner and its adapter.

    • Example Code (XML/Java):

      <Spinner
          android:id="@+id/dataBindingSpinner"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          app:entries="@{viewModel.spinnerData}" />
      
      Spinner dataBindingSpinner = findViewById(R.id.dataBindingSpinner);
      SpinnerViewModel viewModel = new ViewModelProvider(this).get(SpinnerViewModel.class);
      dataBindingSpinner.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, viewModel.getSpinnerData()));
      
  9. Styling and theming Spinner in Android:

    • Description: Applies styles and themes to enhance the visual appearance of the Spinner.

    • Example Code (XML/styles.xml):

      <style name="AppSpinner" parent="Widget.AppCompat.Spinner">
          <!-- Customize Spinner styles -->
      </style>
      
      <Spinner
          android:id="@+id/styledSpinner"
          style="@style/AppSpinner"/>
      
  10. Spinner in toolbar or action bar in Android:

    • Description: Places the Spinner within the toolbar or action bar for a cohesive UI.

    • Example Code (XML/Java):

      <!-- Include the Spinner in the Toolbar layout -->
      
      Spinner toolbarSpinner = findViewById(R.id.toolbarSpinner);
      // Set adapter and handle item selection
      
  11. Multiple Spinners in a single layout Android example:

    • Description: Incorporates multiple Spinners within a single layout for diverse selections.

    • Example Code (XML/Java):

      <Spinner
          android:id="@+id/spinner1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"/>
      
      <Spinner
          android:id="@+id/spinner2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"/>
      
      Spinner spinner1 = findViewById(R.id.spinner1);
      Spinner spinner2 = findViewById(R.id.spinner2);
      // Set adapters and handle item selection for each Spinner
      
  12. Spinner with dropdown animation in Android:

    • Description: Adds animation to the Spinner dropdown for a visually appealing effect.
    • Example Code (Java):
      Spinner animatedSpinner = findViewById(R.id.animatedSpinner);
      ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item);
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      animatedSpinner.setAdapter(adapter);
      
      animatedSpinner.setOnTouchListener((v, event) -> {
          if (event.getAction() == MotionEvent.ACTION_UP) {
              animatedSpinner.performClick();
          }
          return true;
      });
      
  13. Loading data from a database into a Spinner in Android:

    • Description: Fetches data from a database and populates the Spinner dynamically.
    • Example Code (Java):
      Spinner dbSpinner = findViewById(R.id.dbSpinner);
      List<String> dataFromDatabase = databaseHelper.getData();
      ArrayAdapter<String> dbAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dataFromDatabase);
      dbAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      dbSpinner.setAdapter(dbAdapter);
      
  14. Accessibility features for Spinner in Android:

    • Description: Ensures the Spinner is accessible to users with disabilities by incorporating accessibility features.
    • Example Code (Java):
      Spinner accessibleSpinner = findViewById(R.id.accessibleSpinner);
      accessibleSpinner.setContentDescription(getString(R.string.spinner_content_description));