Android Spinner: Effektive Implementierung mit Kotlin

Tauchen Sie ein in die faszinierende Welt der Android Spinners mit Kotlin! Unser praktisches Tutorial führt Sie durch die Erstellung von Dropdown-Menüs, die Anpassung von Layouts und das Handhaben von Klickereignissen. Mit Schritt-für-Schritt-Anleitungen und hilfreichen Tipps sind Sie bereit, Ihre Android-Apps auf das nächste Level zu bringen.

Was werden Sie lernen?

  • Spinners via XML und programmatisch erstellen
  • Ein Platzhalter im Spinner einrichten
  • Ein benutzerdefiniertes Layout für den Spinner erstellen
  • Klickereignisse handhaben und eine Toast-Nachricht anzeigen
  • Verhindern, dass das Klickereignis beim ersten Mal automatisch ausgelöst wird

Was ist ein Android Spinner?

Spinner sind wie ein Dropdown-Menü mit einer Liste von auswählbaren Elementen. Sobald ein Wert ausgewählt ist, kehrt der Spinner mit diesem ausgewählten Wert in den Standardzustand zurück. Seit Android 3.0 ist es nicht mehr möglich, einen Platzhalter im Spinner als Standardzustand anzuzeigen. Stattdessen wird das erste Element angezeigt. Daten innerhalb eines Spinners werden mithilfe eines Adapters geladen.

Spinner Callback-Ereignisse

Das AdapterView.onItemSelectedListener-Interface wird verwendet, um Spinner-Klickereignis-Callbacks auszulösen. Es besteht aus zwei Methoden:

  • onItemSelected
  • onNothingSelected

Im folgenden Abschnitt erstellen wir ein neues Android Studio-Projekt und implementieren Spinner in unserer Anwendung, passen Layouts an und lernen, wie man verschiedene Szenarien handhabt.

Android Spinner Kotlin-Projekt

1. XML Layout-Code

Der Code für die activity_main.xml-Layout-Datei sieht wie folgt aus:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/linearLayout" android:gravity="center" tools:context=".MainActivity"> <Spinner android:id="@+id/mySpinner" android:layout_width="match_parent" android:spinnerMode="dialog" android:layout_height="wrap_content" /> </LinearLayout>

Es enthält derzeit einen einzelnen Spinner. android:spinnerMode kann entweder dialog oder dropdown sein. Um Platzhalter anzuzeigen, sollte dialog als Wert für spinnerMode verwendet werden.

2. Spinner XML-Code

Der Code für spinner_right_aligned.xml lautet wie folgt:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="end" android:padding="15dp" android:textAlignment="gravity" android:textColor="@color/colorPrimary" android:textSize="16sp" />

3. MainActivity Kotlin-Code

Der Code für die MainActivity.kt-Klasse sieht wie folgt aus:

package net.androidly.androidspinnerkotlin import android.content.Context import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.Gravity import android.view.View import android.widget.* import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener { var languages = arrayOf("Java", "PHP", "Kotlin", "Javascript", "Python", "Swift") val NEW_SPINNER_ID = 1 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var aa = ArrayAdapter(this, android.R.layout.simple_spinner_item, languages) aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) with(mySpinner) { adapter = aa setSelection(0, false) onItemSelectedListener = this@MainActivity prompt = "Wählen Sie Ihre bevorzugte Sprache" gravity = Gravity.CENTER } val spinner = Spinner(this) spinner.id = NEW_SPINNER_ID val ll = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) ll.setMargins(10, 40, 10, 10) linearLayout.addView(spinner) aa = ArrayAdapter(this, R.layout.spinner_right_aligned, languages) aa.setDropDownViewResource(R.layout.spinner_right_aligned) with(spinner) { adapter = aa setSelection(0, false) onItemSelectedListener = this@MainActivity layoutParams = ll prompt = "Wählen Sie Ihre bevorzugte Sprache" setPopupBackgroundResource(R.color.material_grey_600) } } override fun onNothingSelected(parent: AdapterView<*>?) { showToast(message = "Nichts ausgewählt") } override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { when (view?.id) { 1 -> showToast(message = "Spinner 2 Position:${position} und Sprache: ${languages[position]}") else -> { showToast(message = "Spinner 1 Position:${position} und Sprache: ${languages[position]}") } } } private fun showToast(context: Context = applicationContext, message: String, duration: Int = Toast.LENGTH_LONG) { Toast.makeText(context, message, duration).show() } }

Wichtige Punkte:

  • Dank der Kotlin Android Extensions ist das XML-Spinner-Widget automatisch in unserer Kotlin-Aktivitätsklasse verfügbar.
  • Wir haben ein Array von Strings erstellt, das Programmiersprachen enthält, die im Adapter mit ArrayAdapter gefüllt werden.
  • setDropDownViewResource wird verwendet, um das Layout für den ausgewählten Zustand und die Spinner-Listenpunkte festzulegen.
  • android.R.layout.simple_spinner_item wird verwendet, um das Standard-Android-SDK-Layout festzulegen. Standardmäßig ist das TextView in diesem Layout linksbündig.
  • Wir haben programmgesteuert einen zweiten Spinner erstellt, der Layouts aus der spinner_right_aligned.xml-Datei lädt.
  • setSelection(0, false) wird verwendet, um zu verhindern, dass die OnItemSelected-Methoden des Spinners beim Erstellen der Aktivität ausgelöst werden.

Wie funktioniert das?

Die Methode setSelection() informiert die Aktivität darüber, dass das erste Spinner-Element bereits ausgewählt wurde. Wir müssen diese Anweisung vor onItemSelectedListener = this platzieren. setPopupBackgroundResource wird verwendet, um die Hintergrundfarbe der Dropdown-Liste festzulegen. Innerhalb der onItemSelected-Funktion verwenden wir die when-Anweisung, um eine Toast-Nachricht für das entsprechende Spinner-Element auszulösen. Dank Kotlin und Funktionen mit Standardwerten haben wir den umständlichen Aufruf des Toasts reduziert.

4. Spinner Kotlin App-Ausgabe

Das folgende Bild zeigt die Ausgabe, wenn die obige Anwendung auf einem Emulator ausgeführt wird.

Bereit, Ihre Android-Apps mit Spinners aufzupeppen? Viel Spaß beim Programmieren mit Kotlin!

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: