单击按钮后重置计数器
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来重置计数器。
可能是这样的:
内部适配器class,添加:
public void resetCheckedCounter(){
checkBoxCounter = 0;
}
对于 "Delete" 按钮,添加:
adapter.resetCheckedCounter();
希望对您有所帮助!
在 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 showsDELETE
. 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来重置计数器。
可能是这样的:
内部适配器class,添加:
public void resetCheckedCounter(){ checkBoxCounter = 0; }
对于 "Delete" 按钮,添加:
adapter.resetCheckedCounter();
希望对您有所帮助!