Drehscheiben bieten eine schnelle Möglichkeit, einen Wert aus einer Reihe auszuwählen. Im Standardstatus wird der aktuell ausgewählte Wert in einem rotierenden Ladesymbol angezeigt. Durch Tippen auf das rotierende Ladesymbol wird ein Menü mit allen anderen Werten angezeigt, die der Nutzer auswählen kann.
![](https://developer.android.google.cn/static/images/ui/spinner.png?authuser=6&hl=de)
Mit dem Spinner
-Objekt können Sie Ihrem Layout ein rotierendes Ladesymbol hinzufügen. Dies ist normalerweise in Ihrem XML-Layout mit einem <Spinner>
-Element der Fall. Dies wird im folgenden Beispiel gezeigt:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
Geben Sie im Quellcode Activity
oder Fragment
ein SpinnerAdapter
an, damit in das rotierende Ladesymbol eine Liste mit Auswahlmöglichkeiten eingeblendet wird.
Wenn Sie Material Design-Komponenten verwenden, entsprechen die verfügbaren Drop-down-Menüs einem Spinner
.
Füllen Sie das rotierende Ladesymbol mit Nutzeroptionen.
Die Auswahlmöglichkeiten, die Sie für das rotierende Ladesymbol angeben, können aus einer beliebigen Quelle stammen. Sie müssen sie jedoch über ein SpinnerAdapter
angeben. Beispiel: ArrayAdapter
, wenn die Auswahlmöglichkeiten in einem Array verfügbar sind, oder CursorAdapter
, wenn die Auswahlmöglichkeiten in einer Datenbankabfrage verfügbar sind.
Wenn die verfügbaren Optionen für das rotierende Ladesymbol beispielsweise vorgegeben sind, können Sie ihnen ein in einer String-Ressourcendatei definiertes String-Array zur Verfügung stellen:
<?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>Uranus</item> <item>Neptune</item> </string-array> </resources>
Bei einem solchen Array können Sie den folgenden Code in Activity
oder Fragment
verwenden, um das Array mit dem rotierenden Ladesymbol über eine Instanz von ArrayAdapter
zu versorgen:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_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 }
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); // Create an ArrayAdapter using the string array and a default spinner layout. 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);
Mit der Methode createFromResource()
können Sie ein ArrayAdapter
aus dem Stringarray erstellen. Das dritte Argument für diese Methode ist eine Layoutressource, die definiert, wie die ausgewählte Auswahl im rotierenden Steuerelement angezeigt wird. Die Plattform stellt das Layout simple_spinner_item
bereit. Dies ist das Standardlayout, sofern Sie kein eigenes Layout für das rotierende Ladesymbol definieren möchten.
Rufen Sie setDropDownViewResource(int)
auf, um das Layout anzugeben, das der Adapter verwendet, um die Liste der rotierenden Auswahlmöglichkeiten anzuzeigen.
simple_spinner_dropdown_item
ist ein weiteres Standardlayout, das von der Plattform definiert wird.
Rufen Sie setAdapter()
auf, um den Adapter auf Ihr Spinner
anzuwenden.
Auf Nutzerauswahl reagieren
Wenn der Nutzer ein Element aus dem Menü des rotierenden Ladesymbols auswählt, empfängt das Spinner
-Objekt ein Ereignis vom Typ „Auf Artikel ausgewählt“.
Wenn Sie den Event-Handler für die Auswahl für ein rotierendes Ladesymbol definieren möchten, implementieren Sie die AdapterView.OnItemSelectedListener
-Schnittstelle und die entsprechende Callback-Methode onItemSelected()
. Hier siehst du beispielsweise eine Implementierung der Schnittstelle in einem Activity
:
Kotlin
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener { ... override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback. } }
Java
public class SpinnerActivity extends Activity implements OnItemSelectedListener { ... public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback. } }
Für die AdapterView.OnItemSelectedListener
-Schnittstelle sind die Callback-Methoden onItemSelected()
und onNothingSelected()
erforderlich.
Geben Sie die Schnittstellenimplementierung durch Aufrufen von setOnItemSelectedListener()
an:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); spinner.setOnItemSelectedListener(this);
Wenn Sie die AdapterView.OnItemSelectedListener
-Schnittstelle wie im vorherigen Beispiel mit Ihrer Activity
oder Fragment
implementieren, können Sie this
als Schnittstelleninstanz übergeben.