2016-11-22 87 views
8

DeleteTask,我有一个按钮用于删除列表,如果在listView中选中复选框。按钮单击后重置计数器

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; 
        } 
       } 
      } 
     }); 

DeleteAdapter,它具有用于计数检查框和button显示计数器的计数器。点击删除button后,计数器将重置为0,并仅显示DELETE删除button setText。现在

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 + ")"); 
         } 
        } 
       } 
      }); 

我的问题是在点击删除按钮时,显示“删除”,但是当我选中该复选框,计数器并没有复位。如何重置计数器?

编辑

我改变计数器checkBoxCounter,但仍然得到同样的结果!

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; 
        } 
       } 
      } 
     }); 

当我点击button删除按钮显示DELETE。但是,当我 再按另一个复选框,计数器从最后一组 值,而不是1

请帮助启动。

这里是我的应用程序屏幕的一部分拍摄

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

+0

你是什么意思重置你正在计数= 0 –

+0

你必须在删除onclick监听器中设置'checkBoxCounter'为'0'。可能是您更新'计数器值'而不是'checkBoxCounter'的错字。 –

+0

@jiteshmohite每次点击删除按钮,按钮将设置文本'删除'。它应该始终将计数器重置为0。但是当我检查复选框时,按钮setText显示'DELETE(3)'。 – Hoo

回答

9

如果有两个不同的类,那么在适配器类中添加一个方法来重置计数器。

可能是这样的:

  1. 内部适配器类,添加:

    public void resetCheckedCounter(){ 
        checkBoxCounter = 0; 
    } 
    
  2. 对于 “删除” 按钮,添加:

    adapter.resetCheckedCounter(); 
    

希望这个帮助!

2

而不是counter = 0你需要做的checkBoxCounter = 0删除里面点击收听

+0

我已将计数器更改为checkBoxCounter,但结果仍相同 – Hoo

+0

是您的变量是静态的,如果不是静态的并且在显示和更新计数器期间使用相同的变量 –

+0

不行........... – Hoo

4

分配checkBoxCounter = 0内部的onClick()函数。 为了安全起见,您可以将代码更改为以下代码以避免从代码的其他部分更新checkBoxCounter。

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

再次检查我的帖子。谢谢 – Hoo