Filterung benutzerdefinierter Adapter IndexOutOfBoundsException

8

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     
user1788012 04.03.2013, 04:59
quelle

4 Antworten

16

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,

%Vor%

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:

%Vor%

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%     
A--C 04.03.2013, 05:02
quelle
1

Sie müssen diese Methoden für eine bessere Leistung hinzufügen:

%Vor%     
Miral Sarwar 29.06.2015 04:27
quelle
0

Sie verpassen getCount() method, schau dir das an demo

Ich hoffe, es wird hilfreich sein!

    
Mehul Joisar 04.03.2013 05:05
quelle
0
%Vor%     
QuokMoon 04.03.2013 05:16
quelle

Tags und Links