451 Stimmen

Android Spinner: Abrufen des Änderungsereignisses für das ausgewählte Element

Wie können Sie den Ereignis-Listener für einen Spinner festlegen, wenn sich das ausgewählte Element ändert?

Im Grunde versuche ich, etwas Ähnliches zu tun:

spinner1.onSelectionChange = handleSelectionChange;

void handleSelectionChange(Object sender){
    //handle event
}

0 Stimmen

Ich habe diese Antworten ausprobiert, aber keine war hilfreich. Sobald Spinner Komponente unterstützt nicht Element klicken Ereignisse. Spinner Dokumentation

1voto

UnknownError Punkte 83

Ich weiß, dies war lange gelöst, aber ich habe eine "Bitte wählen Sie" Zeichenfolge an der Spitze meiner String-Arrays. Dann, wenn Sie den Hörer schreiben

yourspinner.onItemSelectedListener = object : OnItemSelectedListener {
            override fun onItemSelected(adapterView: AdapterView<*>?, view: View, i: Int, l: Long) {
                yourvalue = yourspinner.getSelectedItem().toString()

                when(yourvalue){
                    "Please Select" -> // DO nothing
                    else -> // Do something
                }
            }

            override fun onNothingSelected(adapterView: AdapterView<*>?) {
                return
            }
        }

Sie können die when-Anweisung natürlich erweitern, um verschiedene Reaktionen oder Aktionen zu ermöglichen.

0voto

Joe Plante Punkte 6102

Ein Trick, den ich gefunden habe, war das Setzen Ihrer setOnItemSelectedListeners in onWindowFocusChanged statt onCreate. Ich habe keine schlechten Nebeneffekte zu tun es auf diese Weise, noch gefunden. Grundsätzlich richten Sie die Listener ein, nachdem das Fenster gezeichnet wird. Ich bin nicht sicher, wie oft onWindowFocusChanged ausgeführt wird, aber es ist einfach genug, um selbst eine Sperrvariable zu erstellen, wenn Sie feststellen, dass es zu oft ausgeführt wird.

Ich denke, dass Android ein nachrichtenbasiertes Verarbeitungssystem verwenden könnte, und wenn Sie alles in onCreate setzen, können Sie in Situationen laufen, wo der Spinner aufgefüllt wird, nachdem er gezeichnet wird. Also, Ihr Hörer wird auslösen, nachdem Sie das Element Position festgelegt. Dies ist eine fundierte Vermutung, natürlich, aber fühlen Sie sich frei, mich auf diese zu korrigieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X