470 Stimmen

Ausgewähltes Element des Spinners programmatisch einstellen

Ich arbeite an einem Android-Projekt und ich verwende einen Spinner, der einen Array-Adapter verwendet, der aus der Datenbank gefüllt wird.

Ich kann nicht herausfinden, wie ich das ausgewählte Element in der Liste programmatisch festlegen kann. Zum Beispiel, wenn ich in der Drehscheibe die folgenden Elemente habe:

  • Kategorie 1
  • Kategorie 2
  • Kategorie 3

Wie kann ich programmatisch die Kategorie 2 zum ausgewählten Element machen, wenn der Bildschirm erstellt wird? Ich dachte, es könnte ähnlich wie c# I.E Spinner.SelectedText = "Kategorie 2" sein, aber es scheint keine Methode ähnlich wie diese für Android zu sein.

3voto

Anas Nadeem Punkte 749

Das hat bei mir funktioniert:

mySpinner.post(new Runnable() {
    @Override
    public void run() {
        mySpinner.setSelection(position);

        spinnerAdapter.notifyDataSetChanged();
    }
});

2voto

  for (int x = 0; x < spRaca.getAdapter().getCount(); x++) {
            if (spRaca.getItemIdAtPosition(x) == reprodutor.getId()) {
                spRaca.setSelection(x);
                break;
            }
        }

2voto

Maddy Punkte 4672

Wenn Sie eine Liste von Kontakten haben, können Sie dies tun:

((Spinner) view.findViewById(R.id.mobile)).setSelection(spinnerContactPersonDesignationAdapter.getPosition(schoolContact.get(i).getCONT_DESIGNATION()));

1voto

Zeeshan Punkte 1535

Die meiste Zeit spinner.setSelection(i); //i is 0 to (size-1) of adapter's size funktioniert nicht. Wenn Sie einfach anrufen spinner.setSelection(i);

Das hängt von Ihrer Logik ab.

Wenn die Ansicht vollständig geladen ist und Sie sie von der Schnittstelle aus aufrufen möchten, schlage ich vor, dass Sie die

spinner.setAdapter(spinner_no_of_hospitals.getAdapter());
spinner.setSelection(i); // i is 0 or within adapter size

Oder wenn Sie zwischen Aktivität/Fragment-Lebenszyklus wechseln wollen, rufen Sie wie folgt auf

spinner.post(new Runnable() {
  @Override public void run() {
    spinner.setSelection(i);
  }
});

1voto

Hier ist die Kotlin-Erweiterung, die ich verwende:

fun Spinner.setItem(list: Array<CharSequence>, value: String) {
    val index = list.indexOf(value)
    this.post { this.setSelection(index) }
}

Verwendung:

spinnerPressure.setItem(resources.getTextArray(R.array.array_pressure), pressureUnit)

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