Android中checkbox全选功能的简单实现

checkbox是Android中的一个常用的控件,其中全选功能是对其功能实现的一个简单的扩展,那么接下来我们来看一下要如何实现全选功能。

首先,我们先创建一个普通的项目,修改其activity_main.xml




    
    
    
    



为了显示得比较清晰,我们采用LinearLayout,以垂直的形式显示四个复选框,其中第一个为全选

Android中checkbox全选功能的简单实现_第1张图片

随后我们修改MainActivity.java

package com.example.song4.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;

public class MainActivity extends AppCompatActivity {
    private CheckBox allbox;
    private CheckBox eatbox;
    private CheckBox drinkbox;
    private CheckBox sleepbox;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        allbox =(CheckBox) findViewById(R.id.all);
        eatbox =(CheckBox) findViewById(R.id.eat);
        drinkbox =(CheckBox) findViewById(R.id.drink);
        sleepbox =(CheckBox) findViewById(R.id.sleep);

        AllCheckListener allCheckListener=new AllCheckListener();
        allbox.setOnClickListener(allCheckListener);

        BoxCheckListener boxCheckListener=new BoxCheckListener();
        drinkbox.setOnCheckedChangeListener(boxCheckListener);
        eatbox.setOnCheckedChangeListener(boxCheckListener);
        sleepbox.setOnCheckedChangeListener(boxCheckListener);
    }

    class AllCheckListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            CheckBox all=(CheckBox)v;
            eatbox.setChecked(all.isChecked());
            drinkbox.setChecked(all.isChecked());
            sleepbox.setChecked(all.isChecked());


        }
    }
    class BoxCheckListener implements CompoundButton.OnCheckedChangeListener{
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(!isChecked){
                allbox.setChecked(isChecked);
            }
        }
    }
}

注意其中吃饭、喝水、睡觉三个checkBox使用的是监听器是,onCheckedChangeLisetner,而全选按钮使用的是OnClickListener,这是为了避免在全选的情况下,取消其中一个CheckBox的选中会影响全选。效果图如下



你可能感兴趣的:(Android中checkbox全选功能的简单实现)