608 Stimmen

Wie erstellt man einen Android Spinner mit dem Anfangstext "Select One"?

Ich möchte einen Spinner verwenden, der zunächst (wenn der Benutzer noch keine Auswahl getroffen hat) den Text "Select One" anzeigt. Wenn der Benutzer auf den Spinner klickt, wird die Liste der Elemente angezeigt und der Benutzer wählt eine der Optionen aus. Nachdem der Benutzer eine Auswahl getroffen hat, wird das ausgewählte Element im Spinner anstelle von "Select One" angezeigt.

Ich habe den folgenden Code, um einen Spinner zu erstellen:

String[] items = new String[] {"One", "Two", "Three"};
Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Mit diesem Code wird zunächst das Element "Eins" angezeigt. Ich könnte einfach ein neues Element "Select One" zu den Elementen hinzufügen, aber dann würde "Select One" auch in der Dropdown-Liste als erstes Element angezeigt werden, was ich nicht möchte.

Wie kann ich dieses Problem beheben?

7 Stimmen

Die perfekte Lösung liegt in dieser Frage: stackoverflow.com/questions/9863378/ Überschreiben Sie einfach die Methode getDropDownView().

0 Stimmen

Haben Sie versucht, das erste Element Ihres Adapters auf "Select One" einzustellen?

0 Stimmen

[Hier eine andere tolle, schöne Lösung!][1] [1]: stackoverflow.com/questions/9863378/

-2voto

dvrm Punkte 3711

Wenn Sie mit diesem Problem konfrontiert sind wenn Ihre Artikel vom Datenbank-Cursor aufgefüllt werden ,

die einfachste Lösung, die ich gefunden habe in diese SO antworten:

UNION in Ihrer Cursor-Adapter-Abfrage verwenden und fügen das zusätzliche Element mit id= -1 zum Abfrageergebnis hinzu, ohne es wirklich zur DB hinzuzufügen:

etwas wie:

db.rawQuery("SELECT iWorkerId as _id, nvLastName as name  FROM  Worker
w  UNION  SELECT -1 as _id , '' as name",null);

wenn das ausgewählte Element -1 ist, dann ist das der Standardwert. Andernfalls handelt es sich um einen Datensatz aus der Tabelle.

-4voto

katwal-Dipak Punkte 3253
 ArrayList<String> sizes = new ArrayList<>();

 spinner = (Spinner) findViewById(R.id.spinner_size);

    if (sizes != null && !sizes.isEmpty()) {

        //SORT ArrayList If You Want Data in ASC or DSC Order

        sizes.add("28");
        sizes.add("29");
        sizes.add("31");

        sizes.add("Choose Size"); //adding String at the end of ArrayList
        Collections.reverse(sizes); //Last Item Will Be Shown As A Spinner Title

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, sizes);
        spinner.setAdapter(adapter);

Verwenden Sie einfach die Methode arraylist.add("Your Data"), um ein Element am Ende von arrayList hinzuzufügen und kehren Sie es dann mit Collection.reverse(arrayList) um, so dass der Titel das erste Element in Spinner ist. Sie können das Element auch sortieren, bevor Sie die Daten am Ende hinzufügen. enter image description here

2 Stimmen

Diese Antwort fügt der Frage nichts Neues hinzu. Dieser Ansatz wurde bereits vorgeschlagen, und das Hinzufügen einer identischen Antwort verursacht nur Lärm. Bitte lesen Sie die vorherigen Antworten, bevor Sie eine neue Antwort schreiben.

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