0

我正在尝试在单击单个按钮时清除复选框的所有复选标记,代码对我来说似乎没问题,但它不起作用。复选框的布局不同...在我目前的活动中,我正在夸大复选框并执行 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); 
        }
        });

任何帮助,将不胜感激。

4

2 回答 2

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

    }
    });
于 2013-01-04T05:50:50.220 回答
1

您的适配器具有您想要影响的这些视图。标准的 OOP 原则要求您使用适配器方法来解决它。从您的适配器技术以及它如何巧妙地convertView保持复选框状态来看,我认为该方法是不言而喻的。只需设置boolean确定其状态的标志并刷新适配器。这是一个示例适配器方法,您可以从按钮的OnClickListener

private void clearChecks() {
    for (int i = 0; i < Constants.checkBoxState.length; i++) {
        Constants.checkBoxState[i] = false;
    }
    notifyDataSetChanged();
}
于 2013-01-04T05:52:51.197 回答