Warum kann man keine Elemente aus einem ArrayAdapter hinzufügen / entfernen?
Bin ich mit einer ArrayAdapter<CharSequence>
zum Auffüllen der Elemente der Liste in eine android.widget.Spinner
. Das funktioniert alles gut.
Aber das will ich jetzt halten Sie die Liste der Elemente, die dynamisch, d.h. ich möchte in der Lage sein, hinzufügen/entfernen von Elementen aus der Auswahl-Liste zur Laufzeit. Allerdings, wenn ich rufe adapter.add(item)
oder adapter.remove(item)
ich bekomme immer eine UnsupportedOperationException
obwohl die Javadocs der ArrayAdapter
Klasse beschreiben diese beiden Methoden als nutzbar sein für genau diesen Zweck vorgesehen.
Ist das ein bug, nicht wirklich umgesetzt, oder was übersehe ich hier?
InformationsquelleAutor der Frage mmo | 2010-08-13
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du wahrscheinlich initialisiert den adapter mit einem einfachen Java-array (z.B.
String[]
). Versuchen Sie es mit etwas, das implementiert diejava.util.List
- Schnittstelle (z.B.ArrayList<String>
).InformationsquelleAutor der Antwort CommonsWare
Ich weiß, es ist spät, aber nur eine kurze Erklärung: es ist, weil die Methode Arrays.asList(T... array) zurückgibt benutzerdefinierte innere Klasse mit dem Namen ArrayListnur-lese -. Wie schon gesagt, Sie brauchen, um in voller impl. z.B. java.util.ArrayList.
InformationsquelleAutor der Antwort zeratul021
Hier ist der source code von
ArrayAdapter#remove
:Nur werfen eine
UnsupportedOperationException
es ist die Zeile im else-block. Also das problem ist, dass die Liste, die Sie verwenden unterstützt nicht das entfernen von Elementen. Meine Vermutung ist, du bist in einem array. Versuchen Sie eine ArrayList, zum Beispiel.edit: Also ja, was Mark sagte...
InformationsquelleAutor der Antwort benvd
Ich hatte das gleiche problem, meine Daten gespeichert wurde, die in der Ressource String-Array, also ich war die Schaffung ArraAdapter mit createFromResource.
Den folgenden code zum erstellen von ArrayAdapter von resource String-Array das problem gelöst:
InformationsquelleAutor der Antwort user1063503
In der adapter-Klasse - ein Element Löschen
Fügen Sie ein Element hinzu -
InformationsquelleAutor der Antwort Tom
Wahrscheinlich, Sie werden mit List in Ihre ArrayAdapter Klasse statt ArrayList.
Versuchen, konvertieren Sie Ihre array oder eine Liste zu ArrayList -
InformationsquelleAutor der Antwort Prince Bhardwaj