2016-06-30 22 views
0

ich habe checkboxen in der benutzerdefinierten listeansicht und ich habe zwei seperate buttons eins um alles auszuwählen und ein anderes um zu löschen aber ich habe ein großes problem darin wenn ich ein checkbox auswähle und lösche es funktioniert.but wenn ich alle auswählen und löschen löschen einige der Daten in Listen, zum Beispiel habe ich 50 SMS in der Listenansicht, sobald ich alle auswählen und löschen löschen einige SMS und wieder drücke ich lösche es löschen ein paar andere wie dies .. einige Lösungen vorschlagencheckbox alles auswählen delete issue

+0

Ihre Frage fehlt einige comas und Punkte. Bitte bearbeiten Sie Ihre Frage, um einige Grammatikregeln zu erfüllen. –

Antwort

2

Ich schätze das Problem entsteht, wenn Sie das Element aus der ArrayList in der for-Schleife dort entfernen. Dadurch wird die Größe reduziert und unerwünschte Nebenwirkungen können entstehen.

Versuchen Sie, Ihre SMS Arraylist in umgekehrter Reihenfolge wie folgt iteriert:

for (int i = sms.size()-1; i >= 0; i--) { 

     if(sms.get(i).getChecked() == true){ 
       sms.remove(i); 
     } 
} 

Auf diese Weise Reduzierung der Größe von sms Arraylist wird die Schleife nicht bewirken.

+0

gute perfekte Antwort –

+0

Froh, dass es geholfen hat. Akzeptieren Sie die Antwort, wenn es funktioniert hat. –

0

Ich denke, Problem ist für Schleife obere. In ansonsten if-Anweisung deaktivieren Sie die Kontrollkästchen. versuchen Sie unten Code,

sel.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

    for (int i = 0; i <sms.size() ; i++) { 

     if(sms.get(i).getChecked() == false) { 
        sms.get(i).setChecked(true); 
       }else if(sms.get(i).getChecked()==true) { 
        sms.get(i).setChecked(true); 
       } 


      } 
      ((datalist)mlistView.getAdapter()).notifyDataSetChanged(); 
     } 
    });