我正在尝试清除单击按钮上的复选框的所有复选标记,代码对我来说似乎没问题,但它无法正常工作。复选框处于不同的布局......在我目前的活动中,我正在给复选框充气并执行setChecked(false)(这不起作用)..还有其他方法吗?
Button clearbtn1 = (Button) findViewById(R.id.clearbtn);
clearbtn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inflater_example = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v1= inflater_example.inflate(R.layout.profile, null);
CheckBox checkBox = (CheckBox) v1.findViewById(R.id.checkBox1);
checkBox.setChecked(false);
}
});
任何帮助将不胜感激。
答案 0 :(得分:1)
只需清除常量中的所有复选框状态,然后通知或重置适配器以反映更改。
Button clearbtn1 = (Button) findViewById(R.id.clearbtn);
clearbtn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
for(int i=0;i < Constants.checkBoxState.length; i++)
Constants.checkBoxState[i] = false;
listAdapter.notifyDataSetChanged();
}
});
答案 1 :(得分:1)
您的适配器具有您想要生效的这些视图。标准的OOP原则要求您使用 adapter 方法来实现它。从您的适配器技术判断以及它如何巧妙地对抗convertView
以保持复选框状态,我认为该方法是不言而喻的。只需设置确定其状态的boolean
标志并刷新适配器。这是一个示例适配器方法,您可以通过按钮调用OnClickListener
private void clearChecks() {
for (int i = 0; i < Constants.checkBoxState.length; i++) {
Constants.checkBoxState[i] = false;
}
notifyDataSetChanged();
}