it-swarm.com.de

Wie bekomme ich einen Spinner-Wert?

In Android versuche ich, den ausgewählten Spinner-Wert mit einem Listener abzurufen.

Was ist der beste Weg, um den Wert des Spinners zu ermitteln?

242
Sam Dutton
Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
538
dodo

Der Spinner sollte ein "OnItemSelected" -Ereignis auslösen, wenn etwas ausgewählt ist:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        Object item = parent.getItemAtPosition(pos);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});
123
Erich Douglass

Angenommen, dies ist Ihre XML-Datei mit Spinner-Einträgen (dh Titeln) und Werten:

<resources>
    <string-array name="size_entries">
        <item>Small</item>
        <item>Medium</item>
        <item>Large</item>
    </string-array>

    <string-array name="size_values">
        <item>12</item>
        <item>16</item>
        <item>20</item>
    </string-array>
</resources>

und das ist dein Spinner:

<Spinner
    Android:id="@+id/size_spinner"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:entries="@array/size_entries" />

Dann in Ihrem Code, um die Einträge zu erhalten:

Spinner spinner = (Spinner) findViewById(R.id.size_spinner);
String size = spinner.getSelectedItem().toString(); // Small, Medium, Large

und um die Werte zu erhalten:

int spinner_pos = spinner.getSelectedItemPosition();
String[] size_values = getResources().getStringArray(R.array.size_values);
int size = Integer.valueOf(size_values[spinner_pos]); // 12, 16, 20
45
lenooh

Ja, Sie können einen Listener über setOnItemSelectedListener() registrieren, wie gezeigt wird hier .

14
CommonsWare
View view =(View) getActivity().findViewById(controlId);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1);
String valToSet = spinner.getSelectedItem().toString();
12
gilix

Wenn Sie bereits wissen, dass der Artikel ein String ist, bevorzuge ich:

String itemText = (String) mySpinner.getSelectedItem();

Das Aufrufen von toString() für ein Object, von dem Sie wissen, dass es sich um ein String handelt, scheint eher ein Umweg zu sein, als nur das Object in String umzuwandeln. .

11
Matt Logan