如何验证多个复选框

时间:2015-08-07 13:15:55

标签: android android-checkbox

我在一行中有三个复选框。对于每个复选框,我在下面有一个不可见的布局。

1)如果选中第一个复选框,则会显示相应的布局 2)如果选中第二个复选框,将显示相应的布局 3)如果选中第三个复选框,将显示相应的布局 4)如果选中所有复选框,则所有布局都将可见。

3 个答案:

答案 0 :(得分:1)

试用此代码

public class MySampleActivity extends Activity {
    CheckBox cb1, cb2, cb3, cb4;
    LinearLayout l1, l2, l3, l4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        cb1 = (CheckBox) findViewById(R.id.cb1);
        cb2 = (CheckBox) findViewById(R.id.cb2);
        cb3 = (CheckBox) findViewById(R.id.cb3);
        cb4 = (CheckBox) findViewById(R.id.cb4);
        l1 = (LinearLayout) findViewById(R.id.l1);
        l2 = (LinearLayout) findViewById(R.id.l2);
        l3 = (LinearLayout) findViewById(R.id.l3);
        l4 = (LinearLayout) findViewById(R.id.l4);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(1));
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(2));
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(3));
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(4));
    }

    public class MyCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
        int position;

        public MyCheckedChangeListener(int position) {
            this.position = position;
        }

        private void changeVisibility(LinearLayout l1, boolean isChecked) {
            if (isChecked) {
                l1.setVisibility(View.VISIBLE);
            } else {
                l1.setVisibility(View.GONE);
            }

        }

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch (position) {
                case 1:
                    changeVisibility(l1, isChecked);
                    break;
                case 2:
                    changeVisibility(l2, isChecked);
                    break;
                case 3:
                    changeVisibility(l3, isChecked);
                    break;
                case 4:
                    changeVisibility(l4, isChecked);
                    break;
            }
        }
    }
}

答案 1 :(得分:0)

选中是否选中复选框,然后根据它显示隐藏:

CheckBox cb1 = (CheckBox) findViewById(R.id.cb1);
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (isChecked)
        {
            yourLayout.setVisibility(View.Visible);
        }
        else
        { 
            yourLayout.setVisibility(View.Gone );
        }
    }
});

答案 2 :(得分:0)

在xml布局文件中,为每个复选框指定一个ID(checkbox_1,checkbox_2,checkbox_3):

Exception of type 'System.OutOfMemoryException' was thrown. 

   at System.IO.MemoryStream.set_Capacity(Int32 value) 
   at System.IO.MemoryStream.EnsureCapacity(Int32 value) 
   at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
   at MS.Internal.InternalWebRequestStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
   at System.IO.Stream.<BeginWriteInternal>b__11(Object param0) 
   at System.Threading.Tasks.Task`1.InnerInvoke() 
   at System.Threading.Tasks.Task.Execute() 

与布局元素(layout_1,layout_2,layout_3)相同:

android:id="@+id/checkbox_1"

在您的代码中,指向元素:

android:id="@+id/layout_1"

为每个复选框添加一个检查侦听器:

CheckBox checkbox1 = (CheckBox) findViewById(R.id.checkbox_1);
RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.layout_1);

其他两个相同。