2016-11-22 2 views
8

In DeleteTask, ich habe eine Schaltfläche zum Löschen der Liste, wenn Kontrollkästchen in der ListView aktiviert ist.Reset-Zähler nach dem Klicken auf die Schaltfläche

delete.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       int itemCount = listview.getCount(); 
       for (int i = itemCount - 1; i >= 0; i--) { 
        SearchList search = adapter.getItem(i); 
        if (search.isSelected()) { 
         adapter.removeItem(i); 
         delete.setText("DELETE"); 
         counter=0; 
        } 
       } 
      } 
     }); 

In DeleteAdapter, hat es einen Zähler verwendet, um die überprüfte Feld zu zählen und die Zähler in button anzuzeigen. Sobald der Löschvorgang button angeklickt wird, wird angenommen, dass der Zähler auf 0 zurückgesetzt wurde und nur DELETE in delete button setText anzeigt.

holder.ckbox.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if (((CheckBox) v).isChecked()) { 
         int getPosition = (Integer) v.getTag(); // Here we get the position that we have set for the checkbox using setTag. 
         search.get(getPosition).setSelected(((CheckBox)v).isChecked()); // Set the value of checkbox to maintain its state. 
         checkBoxCounter ++; 
         delete.setText("DELETE"+""+"("+ checkBoxCounter +")"); 
        } else 
        { 
         int getPosition = (Integer) v.getTag(); // Here we get the position that we have set for the checkbox using setTag. 
         search.get(getPosition).setSelected(((CheckBox) v).isChecked()); // Set the value of checkbox to maintain its state. 
         checkBoxCounter--; 
         if (checkBoxCounter == 0) { 
          delete.setText("DELETE"); 
         } 
         else { 
          delete.setText("DELETE" + "" + "(" + checkBoxCounter + ")"); 
         } 
        } 
       } 
      }); 

Mein Problem ist jetzt, wenn die Löschtaste angeklickt wird, es zeigen ‚DELETE‘, aber wenn ich die Markierung des Kästchens, hat der Zähler nicht zurückgesetzt. Wie setze ich den Zähler zurück?

bearbeiten

Ich habe den Zähler auf checkBoxCounter ändern, aber immer noch das gleiche Ergebnis zu erzielen!

delete.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       int itemCount = listview.getCount(); 
       for (int i = itemCount - 1; i >= 0; i--) { 
        SearchList search = adapter.getItem(i); 
        if (search.isSelected()) { 
         adapter.removeItem(i); 
         delete.setText("DELETE"); 
         checkBoxCounter=0; 
        } 
       } 
      } 
     }); 

Wenn ich auf button löschen, zeigt die Schaltfläche DELETE. Aber, wenn ich wieder eine andere Option drücken , beginnt der Zähler aus dem letzten Satz Wert statt 1.

Bitte helfen.

Hier sind Teil meiner app Screenshot

https://i.stack.imgur.com/R954N.jpg

+0

was meinst du mit reset du machst counter = 0 –

+0

Du musst 'checkBoxCounter' auf' 0' in delete onclick listen setzen. Wahrscheinlich ein Tippfehler Sie aktualisieren "Zähler" Wert nicht "checkBoxCounter". –

+0

@jiteshmohite Jedes Mal, wenn auf die Schaltfläche zum Löschen geklickt wird, wird die Schaltfläche Text 'DELETE' gesetzt. Es sollte den Zähler immer auf 0 zurücksetzen.Aber wenn ich das Kontrollkästchen ankreuze, zeigt der Button setText 'DELETE (3)'. – Hoo

Antwort

9

Wenn zwei verschiedene Klassen vorhanden sind, fügen Sie eine Methode in der Adapterklasse hinzu, um den Zähler zurückzusetzen.

Kann so aussehen:

  1. Innen Adapter-Klasse hinzufügen:

    public void resetCheckedCounter(){ 
        checkBoxCounter = 0; 
    } 
    
  2. Für die Schaltfläche "Löschen", fügen:

    adapter.resetCheckedCounter(); 
    

Hoffnung diese Hilfe!

2

Statt counter = 0 Sie checkBoxCounter = 0 innen tun müssen, klicken Zuhörer löschen

+0

Ich habe Zähler auf checkBoxCounter geändert, aber das Ergebnis immer noch – Hoo

+0

ist Ihre Variable ist statisch, wenn es nicht statisch machen und verwendet die gleiche Variable während der Anzeige und Aktualisierung Zähler –

+0

nein ........... – Hoo

4

zuweisen checkBoxCounter = 0 Innen onClick() Funktion. und aus Sicherheitsgründen können Sie Code wie unten ändern, um zu vermeiden, checkBoxCounter von einem anderen Teil des Codes zu aktualisieren.

holder.ckbox.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if (((CheckBox) v).isChecked()) { 
         int getPosition = (Integer) v.getTag(); // Here we get the position that we have set for the checkbox using setTag. 
         search.get(getPosition).setSelected(((CheckBox)v).isChecked()); // Set the value of checkbox to maintain its state. 
         checkBoxCounter ++; 
         delete.setText("DELETE"+""+"("+ checkBoxCounter +")"); 
        } else 
        { 
         int getPosition = (Integer) v.getTag(); // Here we get the position that we have set for the checkbox using setTag. 
         search.get(getPosition).setSelected(((CheckBox) v).isChecked()); // Set the value of checkbox to maintain its state. 
         checkBoxCounter--; 
         if (checkBoxCounter <= 0) { 
          delete.setText("DELETE"); 
          checkBoxCounter = 0; 
         } 
         else { 
          delete.setText("DELETE" + "" + "(" + checkBoxCounter + ")"); 
         } 
        } 
       } 
      }); 
+0

Überprüfen Sie meinen Beitrag erneut. Danke – Hoo

Verwandte Themen