checbox的全选,以及复选,还有点击监听和状态监听

本文介绍了Android中Checkbox的状态改变监听(setOnCheckedChangeListener)与点击监听(setOnClickListener)的区别,并详细展示了如何通过Checkbox实现全选和反选功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我先说一下:



checkbox有状态改变监听和点击监听事件:

// 状态改变监听事件

ch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            Log.v("aaa", "read is checked");
        } else {
            Log.v("aaa", "read is unchecked");
        }
    }
});
//点击监听事件

ch1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (((CheckBox) v).isChecked()) {
            Log.v("aaa", "read is checked qqqq");
        } else {
            Log.v("aaa", "read is unchecked");
        }
    }
});
区别就在于:假如你对一个控件进行状态监听时,它的状态在别的监听中进行改变,这样它就会走
setOnCheckedChangeListener
里面的方法。 而setonclintent不会。


checkbox的全选和反选:

首先建一个bean对象,封装到list集合里,然后给个默认值。


checkBox.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        boolean falg = ((CheckBox) v).isChecked();
        if(falg)
        {
            for (int i=0;i<list_lead.size();i++)
            {
                list_lead.get(i).setB1(true);
            }
            m1.notifyDataSetChanged();
        }
        else{
            for (int i=0;i<list_lead.size();i++)
            {
                list_lead.get(i).setB1(false);
            }
            m1.notifyDataSetChanged();
        }
    }
});
//构造有参里可以传控件。


 holder.iteam_check.setChecked(list_lead.get(position).getB1());

             holder.iteam_check.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     boolean falg = ((CheckBox) v).isChecked();
                     boolean f=true;
                     if(!falg){
                         list_lead.get(position).setB1(false);

                     }else{
                         list_lead.get(position).setB1(true);
                     }

                     for(int i =0;i<list_lead.size();i++){
                         if(!list_lead.get(i).getB1()){
                             f=false;
                             checbox.setChecked(false);
return;
                         }
                     }

                     if(f){
                         checbox.setChecked(true);
                     }


                 }
             });

        holder.iteam_check.setChecked(list_lead.get(position).getB1());
// 
多写这个可以防止条目的复用!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值