在Android中为复选框执行全部标记

时间:2012-05-15 11:02:19

标签: android checkbox selectall

我正在开发一个包含许多活动和类的android项目。

在少数布局中,我有一个工具,用户可以在其中选择全部标记,以便选中所有复选框。

但是,我面临的问题是我只知道一种方式(这太长了) - 通过为每个现有布局创建一个标记布局,粘贴标记布局代码中的原始布局代码,然后选中所有复选框。 这要求我为每个布局创建所有取消标记的xmls。

请告诉我一种方法,我可以为markall创建一个xml,其中包含所有选中的复选框,然后在单击标记全部时在原始布局上调用该布局。

2 个答案:

答案 0 :(得分:0)

假设您有以下布局

<LinearLayout
   android:id="@+id/checkbox_container"
   ...params>
   <CheckBox ...params/>
   <TextView ...params/>
   <CheckBox ...params/>
   <SomeView ...params/>
   <CheckBox ...params/>
</LinearLayout>

在Activity

中获取这样的checkBoxLayout
LinearLayout container = (LinearLayout)findViewById(R.id.checkbox_container);

像这样迭代容器内的孩子:

for (int i = 0; i < container.getChildCount(); i++){
    View v = container.getChildAt(i);
    if (v instanceof CheckBox){
        CheckBox cb = (CheckBox)v;
        // isChecked should be a boolean indicating if every Checkbox should be checked or not
        cb.setChecked(isChecked)
    }
}

答案 1 :(得分:0)

CheckBox MarkAllCheckBox =
    (CheckBox) findViewById( R.id.MarkAllCheckBox);
MarkAllCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            checkBox1.setChecked("true");
            checkBox2.setChecked("true");
            checkBox3.setChecked("true");
            //so on
        }
    }
});