Ich versuche, die ausgewählte Elementzeichenfolge aus einer Spinner
zu erhalten. Bisher habe ich folgendes bekommen:
bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString());
Dies funktioniert nicht und führt zu einer Ausnahme bei der Klassenumwandlung (Ich dachte, ich könnte eine View
in ein Widget umwandeln, das es erbt. Offensichtlich nicht!) Wie erhält man den ausgewählten Wert einer Spinner
?
Um den ausgewählten Wert eines Spinners zu erhalten, können Sie diesem Beispiel folgen.
Erstellen Sie eine geschachtelte Klasse, die AdapterView.OnItemSelectedListener implementiert. Dadurch wird eine Rückrufmethode bereitgestellt, die Ihre Anwendung benachrichtigt, wenn ein Element aus dem Spinner ausgewählt wurde.
Innerhalb der "onItemSelected" -Methode dieser Klasse können Sie das ausgewählte Element abrufen:
public class YourItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String selected = parent.getItemAtPosition(pos).toString();
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
Schließlich muss Ihr ItemSelectedListener im Spinner registriert sein:
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
Sie haben getSelectedXXX-Methoden aus der AdapterView-Klasse, von denen der Spinner abgeleitet ist:
Verwenden Sie einfach folgendes:
spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();
Dadurch erhalten Sie die String
des ausgewählten Elements in der Spinner
.
mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition())
arbeitet basierend auf Richs Beschreibung.
Hängt davon ab, an welchem Punkt Sie den Wert "einfangen" möchten.
Wenn Sie zum Beispiel den Wert abrufen möchten, sobald der Benutzer das ausgewählte Drehfeld-Element ändert, verwenden Sie den Listener-Ansatz (bereitgestellt von Jalopaba).
Wenn Sie den Wert lieber abrufen, wenn ein Benutzer die letzte Aufgabe ausführt, z. B. das Klicken auf eine Schaltfläche zum Senden, oder etwas anderes, dann ist die Antwort von Rich besser.
Dies ist ein anderer Weg:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int pos, long arg3) {
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Um nur den String-Wert innerhalb des Spinners zu erhalten, verwenden Sie Folgendes:
spinner.getSelectedItem().toString();
Spinner spinner=(Spinner) findViewById(R.id.spinnername);
String valueinString = spinner.getSelectedItem().toString();
Falls Spinner-Werte int
sind, wird die Typumwandlung in int
vorgenommen.
int valueinInt=(int)(spinner.getSelectedItem());