ArrayList.remove (i) löscht nicht alle Objekte, wie es sollte

8

Ich habe eine einfache Listview (RecyclerView), wo jedes Listenelement ein Kontrollkästchen hat. Alle Elemente, die überprüft werden, sollten mit diesem Code gelöscht werden:

%Vor%

Aber aus irgendeinem Grund nicht. Wenn 10 Elemente aktiviert sind, werden nur 7 von ihnen gelöscht und ich muss den Code erneut ausführen, um den Rest zu löschen.

Der Code scheint in Ordnung zu sein, aber ich verstehe wirklich nicht, warum er nicht alle überprüften oder all das (isBought == 1)

löscht     
bdawg 12.03.2016, 11:37
quelle

3 Antworten

17
___ qstntxt ___

Ich habe eine einfache Listview (RecyclerView), wo jedes Listenelement ein Kontrollkästchen hat. Alle Elemente, die überprüft werden, sollten mit diesem Code gelöscht werden:

%Vor%

Aber aus irgendeinem Grund nicht. Wenn 10 Elemente aktiviert sind, werden nur 7 von ihnen gelöscht und ich muss den Code erneut ausführen, um den Rest zu löschen.

Der Code scheint in Ordnung zu sein, aber ich verstehe wirklich nicht, warum er nicht alle überprüften oder all das %code%

löscht     
___ answer35957270 ___

Kehre die Schleife um!

%Vor%

Wenn Sie nicht beabsichtigen, die gesamte ArrayList zu löschen, müssen Sie sich keine Sorgen machen, da sich die Größe der Änderungen nicht auf den Rest der Tests auswirkt.

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123list ___ Liste kann sich beziehen auf: eine verkettete Liste (eine geordnete Menge von Knoten, die jeweils auf ihren Nachfolger verweisen) oder eine Form eines dynamischen Arrays. Um nicht für HTML-Listen verwendet zu werden, verwenden Sie stattdessen [html-lists]. ___ qstnhdr ___ ArrayList.remove (i) löscht nicht alle Objekte, wie es sollte ___ answer35957188 ​​___

entfernen (indexieren) nicht nur lösche das Objekt, verschiebe aber alle verbleibenden Objekte, um die Lücke zu schließen. Sie müssen vom Ende der Liste zum Anfang iterieren

%Vor%     
___ answer35957386 ___

Zusätzlich zu den oben genannten Möglichkeiten können Sie dies auch in aufsteigender Reihenfolge tun:

%Vor%

Es gibt eine weitere einfache Alternative, wenn Sie Java 8 verwenden:

%Vor%

Referenz: Ссылка

    
___
Guy 12.03.2016, 11:40
quelle
5

Zusätzlich zu den oben genannten Möglichkeiten können Sie dies auch in aufsteigender Reihenfolge tun:

%Vor%

Es gibt eine weitere einfache Alternative, wenn Sie Java 8 verwenden:

%Vor%

Referenz: Ссылка

    
SOFe 12.03.2016 12:01
quelle
3

Kehre die Schleife um!

%Vor%

Wenn Sie nicht beabsichtigen, die gesamte ArrayList zu löschen, müssen Sie sich keine Sorgen machen, da sich die Größe der Änderungen nicht auf den Rest der Tests auswirkt.

    
Joe's Morgue 12.03.2016 11:49
quelle

Tags und Links