2016-09-23 2 views
1

Ich habe jetzt ein Problem, dass ich wirklich nicht weiß, was los ist.Kontrollkästchen in benutzerdefinierten ListView und selectAll Button Bug

Zuerst lassen Sie mich erklären, was ich tun möchte. Ich habe eine benutzerdefinierte ListView, die meine Benutzerdetails und ein Kontrollkästchen daneben zeigt. Wenn ich das Kontrollkästchen aktiviert habe, wird das selectAll-Kontrollkästchen zunächst nicht automatisch aktiviert.

Daher habe ich die folgenden Codes implementiert. Es funktioniert zuerst perfekt, aber am Ende fand ich heraus, dass, wenn ich zu viel Item habe, dass ich nach unten scrollen muss, das System erkannt hat, dass ich das Häkchen abgehakt habe und mir hilft, meine "Zählung" abzuziehen.

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if(buttonView == selectAll){ 
     selectAll.setChecked(isChecked); 
     for(int i = 0; i < theList.size(); i++){ 
      theList.get(i).setSelected(isChecked); 
      theList.get(i).setCheckAll(isChecked); 
     } 
     notifyDataSetChanged(); 

    }else{ 
     int position2 = (Integer) buttonView.getTag(); 
     if(isChecked){ 
      theList.get(position2).setSelected(true); 
      System.out.println("count here positions:"+ position2); 
      count++; 
      System.out.println("count here:"+ count); 
      if(count == theList.size()) 
      { 
       selectAll.setChecked(true); 
      } 
      //String this_is_the_comment = theList.get(position2).getApprComments(); 
      //System.out.println(this_is_the_comment); 
     }else{ 
      theList.get(position2).setSelected(false); 
      count--; //when i scroll down the if condition will come to here 
      System.out.println("count here: -- "+count); 
      if (selectAll.isChecked()) { 
       selectAll.setChecked(false); 
       for (int i = 0; i < theList.size(); i++) { 
        theList.get(i).setSelected(true); 
        theList.get(position2).setSelected(false); 
       } 
      } 
     } 
    } 

Bitte bitte helfen Sie mir mit diesem Fehler. Ich bin verloren und fest für 3 Tage.

+0

Jungs. Entschuldigung für mein schlechtes Englisch, das Problem, dem ich jetzt gegenüberstehe ist, dass, wenn ich den Bildschirm hinunter scrolle, ich in count-- kommen werde; was ist ich weiß nicht, warum das passiert ist –

Antwort

1

in onCheckedChanged Methode schließlich müssen Sie prüfen, ob alle Einzelteile überprüft werden, wenn ja, dann führen selectAll.setChecked(true);

dies in Ihrer Methode zuletzt hinzufügen

boolean allChecked=true; 
for(int i = 0; i < theList.size(); i++){ 
    if(theList.get(i).isSelected){ 
     checker=false; 
    } 
} 
if(allChecked){ 
    selectAll.setChecked(true); 
} 
+0

ya, ich habe es hier selectAll.setChecked (true); –

+0

Nein in Ihrem Code ist es nicht da ... es muss endlich ohne jede Bedingung sein –

+0

Das Problem, das ich vor mir habe, ist, dass ich weiter in meinen anderen Zustand gehe, wenn ich den Bildschirm nach unten scrolle. Wenn es zu meiner anderen Bedingung geht, meine Zählung wird sein - –

Verwandte Themen