Android Code: Spinner Eine einfache DropDown-Liste erstellen
Dieses Beispiel zeigt eine einfache DropDown-Liste in Android Java, welche mehrere Werte enthält und auf das Auswählen einer Zeile reagiert.
Ein Dropdown Auswahlelement in Android heißt: Spinner und wird mittels eines Adapters geladen mit String-Werten oder mit XML Listen.
Dieses Beispiel lädt eine Liste an String Texten, welche in einem String-Array gespeichert sind.
Beim Auswählen einer Zeile wird das Ereignis onItemSelected ausgeführt.
Das Spinner-Element sieht in der Runtime auf einem Android Smartphone wie hier dargestellt aus:
Einbau im Design Modus:
Zunächst zieht man aus der Toolbox ein Spinner-Element in die Activity oder in ein Fragment.
Design-Modus der Datei activity_main.xml
Die Activity Datei sieht dann wie folgt aus und enthält den <Spinner> Block. Damit das Element erkannt wird, muss man eine ID eintragen
android:id="@+id/spinner"
Main_Activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="de.rue25.demo_spinner_01.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Demo Spinner1"
android:textSize="18sp"
android:id="@+id/lblTitle"/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="44dp"
android:id="@+id/spinner"
android:layout_below="@+id/lblTitle"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
</RelativeLayout>
|
Werte speichern
Die Werte oder Strings, welche in die Spinner-Liste zur Laufzeit geladen werden sollen, werden in eine separate Resourcen-Datei geladen
Hierzu geht man auf das Verzeichnis
Android->app->res->values und klickt mit der rechten Maustaste auf das Context-Menü:
New->Values resource file
Diese Datei öffnet man und schreibt die Werte im innern des <resources> Bereiches ab durch die Definition eines
<string-array>Arrays mit mehreren
<item>Werten
arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Sun</item>
<item>Ganimed</item>
</string-array>
</resources>
|
Spinner mit Werten laden und onSelected-Event einbauen
Das Spinner-Element wird nicht automatisch durch ein Setup geladen. Man muss es in dem
onCreate() Ereignis der Activity laden.
Hierzu füllt man einen ArrayAdapter mit den String-Werten aus dem Array.
Dann weist man den Adapter dem Spinner-Control zu.
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.planets_array, android.R.layout.simple_spinner_item);
// 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.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
|
Event zuweisen
In diesem Beispiel wird direkt die Activity-Klasse, in der sich das Anzeige-Element befindet mit dem Ereignis beim Auswählen eines Listenelementes erweitert.
Dieses erfolgt dadurch dass man die Klasse mit implements AdapterView.OnItemSelectedListener erweitert.
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
|
Die Methoden auf die Ereignisse der Spinners werden direkt in die Klasse der Activity geschrieben.
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String sSelected=parent.getItemAtPosition(position).toString();
Toast.makeText(this,sSelected,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
|
Das Zuweisen, dass diese Definition von onItemSelected auch zu dem angezeigten Spinner gehört wird mit der folgenden Zeile umgesetzt in der onCreate() Methode.
spinner.setOnItemSelectedListener(this);
|

.. .. …
MainActivity.java
package de.rue25.demo_spinner_01;
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 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.planets_array, android.R.layout.simple_spinner_item);
// 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.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String sSelected=parent.getItemAtPosition(position).toString();
Toast.makeText(this,sSelected,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
|
Video Anleitung