单击按钮后重置计数器

Reset counter after button click

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中显示该计数器。单击 delete button 后,计数器假设重置为 0,并且仅在 delete button setText 中显示 DELETE

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

我现在的问题是当点击删除按钮时,它显示 'DELETE',但是当我选中复选框时,计数器没有重置。如何重置计数器?

编辑

我已将计数器更改为 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;
                    }
                }
            }
        });

When I click button delete, the button shows DELETE. But, when I press another checkbox again, the counter starts from the last set value instead of 1.

请帮忙。

这是我的部分应用程序屏幕截图

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

而不是 counter = 0 你需要做 checkBoxCounter = 0 inside delete click listener

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

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

可能是这样的:

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

    public void resetCheckedCounter(){
        checkBoxCounter = 0;
    }
    
  2. 对于 "Delete" 按钮,添加:

    adapter.resetCheckedCounter();
    

希望对您有所帮助!