Ich bin Anfänger bei Android.
Mein benutzerdefinierter Adapter verursacht beim Filtern eine Ausnahme.
Hier ist mein Code. private Klasse DeptAdapter erweitert ArrayAdapter implementiert Filterable {
%Vor%hilf mir irgendjemand .... Ich kann nicht verstehen, warum getView () Methode mehr als items.size ()
aufgerufen wurde Beachten Sie, dass getView()
die Größe der Elemente abfragt, die das superclass
hat, und das ist es, was Sie ursprünglich beim Aufruf des Superklassenkonstruktors übergeben haben,
Daher weiß die Oberklasse nicht, dass Sie die Größe geändert haben, wenn Sie gefiltert haben. Das bedeutet, dass getCount()
die ursprüngliche Größe des Arrays zurückgibt, die verständlicherweise größer als das gefilterte Array ist.
Dies bedeutet, dass Sie die Methode getCount()
überschreiben sollten, damit Sie sicher sind, dass Sie die tatsächlich gültige Größe zurückgeben:
Sie sollten auch die anderen Methoden, die mit den List-Operationen in Beziehung stehen (wie zum Beispiel "getting"), überschreiben, wenn Sie sie verwenden wollen. ZB:
%Vor%Sie müssen diese Methoden für eine bessere Leistung hinzufügen:
%Vor% Sie verpassen getCount()
method,
schau dir das an demo
Ich hoffe, es wird hilfreich sein!
Tags und Links android filter custom-adapter