2016-11-22 83 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