How to Use Spinner in Android: Simple Guide with Example
In Android, use the
Spinner widget to create a dropdown list for user selection. You set an ArrayAdapter to provide the list items and handle user selection with OnItemSelectedListener.Syntax
The Spinner widget displays a dropdown list. You create it in XML or code, then set an ArrayAdapter to supply the items. Use setOnItemSelectedListener to respond when the user picks an item.
- Spinner: The dropdown UI element.
- ArrayAdapter: Connects data (like a string array) to the Spinner.
- OnItemSelectedListener: Listens for user selection events.
java
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dataArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Handle selection
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Handle no selection
}
});Example
This example shows a Spinner with a list of colors. When the user selects a color, a message appears showing the chosen item.
java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Spinner spinner = findViewById(R.id.spinner); String[] colors = {"Red", "Green", "Blue", "Yellow"}; ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, colors); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String selected = (String) parent.getItemAtPosition(position); Toast.makeText(MainActivity.this, "Selected: " + selected, Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { // No action needed } }); } }
Output
A dropdown spinner appears with options: Red, Green, Blue, Yellow. Selecting an option shows a short popup message with the selected color.
Common Pitfalls
Common mistakes when using Spinner include:
- Not setting an adapter, so the Spinner shows no items.
- Using the wrong layout for the adapter, causing UI issues.
- Not handling
onNothingSelected, which can cause unexpected behavior. - Forgetting to call
setDropDownViewResourceon the adapter, which affects dropdown item appearance.
java
/* Wrong: Missing setDropDownViewResource causes dropdown items to look bad */ ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dataArray); spinner.setAdapter(adapter); // Dropdown items may not display properly /* Right: Set dropdown view resource for proper dropdown item layout */ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);
Quick Reference
Tips for using Spinner:
- Always set an
ArrayAdapterwithsetDropDownViewResource. - Use
OnItemSelectedListenerto react to user choices. - Define Spinner in XML for easy layout management.
- Test on different screen sizes for good dropdown display.
Key Takeaways
Use Spinner with ArrayAdapter to show dropdown lists in Android.
Always call setDropDownViewResource on the adapter for proper dropdown styling.
Handle user selection with OnItemSelectedListener to respond to choices.
Define Spinner in XML and connect it in code for clean UI setup.
Test Spinner behavior on different devices to ensure usability.