Android(5)多选按钮CheckBox、OnClickListener、OnCheckedChangeListener

public class MainActivity extends ActionBarActivity {

    private CheckBox eatBox;
    private CheckBox sleepBox;
    private CheckBox shopBox;
    private CheckBox all;
    private LinearLayout mCheckedLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        eatBox = (CheckBox)findViewById(R.id.eat);
        sleepBox = (CheckBox)findViewById(R.id.sleep);
        shopBox = (CheckBox)findViewById(R.id.shop);
        all = (CheckBox)findViewById(R.id.all);
        mCheckedLayout = (LinearLayout)findViewById(R.id.checked);

//      BoxClickListener listener = new BoxClickListener();
        clickBoxCheckListener listener = new clickBoxCheckListener();
        eatBox.setOnCheckedChangeListener(listener);
        sleepBox.setOnCheckedChangeListener(listener);
        shopBox.setOnCheckedChangeListener(listener);
        all.setOnCheckedChangeListener(listener);
    }
    class clickBoxCheckListener implements OnCheckedChangeListener{

        @Override
        public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
            if(buttonView.getId() == R.id.eat){
                System.out.println("eat");
            }else if(buttonView.getId() == R.id.sleep){
                System.out.println("sleep");
            }else if(buttonView.getId() == R.id.shop){
                System.out.println("shop");
            }else if(buttonView.getId() == R.id.all){

            }
            if(isChecked == true && buttonView.getId() == R.id.all){
                for(int i = 0;i < mCheckedLayout.getChildCount();i++){
                    CheckBox cb = (CheckBox)mCheckedLayout.getChildAt(i);
                    cb.setChecked(true);
                }
            }else if(isChecked == false && buttonView.getId() == R.id.all){
                for(int i = 0;i < mCheckedLayout.getChildCount();i++){
                    CheckBox cb = (CheckBox)mCheckedLayout.getChildAt(i);
                    cb.setChecked(false);
                }
                System.out.println("enchecked");
            }
        }
    }
//  class BoxClickListener implements android.view.View.OnClickListener{
//
//      @Override
//      public void onClick(View v) {
//          CheckBox cb = (CheckBox)v;
//          if(cb.getId() == R.id.eat){
//              System.out.println("eat");
//          }else if(cb.getId() == R.id.sleep){
//              System.out.println("sleep");
//          }else if(cb.getId() == R.id.shop){
//              System.out.println("shop");
//          }
//          if(cb.isChecked()){
//              System.out.println("checked");
//          }else{
//              System.out.println("unchecked");
//          }
//      }
//  }
}

OnClickListener将View向下转型,通过ID判断是哪个CheckBox,OnClickListener只要勾选框有变化就会触发,无论是选中还是取消选中。

OnCheckedChangeListener,CompoundButton 即当前多选框的选项,当勾选的状态发生改变该方法才会被触发。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值