Android:checkbox多选样式怎么操作

这个问题折磨了好几天,一直拖着没搞,最后收尾了,逃不掉了,没办法

下面是实现的效果,方便大家了解一下这个是啥东西

就是点击全部的checkbox的时候下面的都会选中,下面的三个item是动态创建的,当动态创建的item点满的时候,”全部“,会触发勾选,有个细微的联动效果,可能有同学一时间摸不着头脑,比如,俺,当时感觉难搞,硬是不想搞...

我只提供一些核心的代码,具体部分,各位同学自己写吧,全粘贴上来实在太多了

 

然后就说一下这个咋实现的

其实不难,对吧,但我写的好像比较复杂,我打算封装一下的,但项目里面就这一行,我想想就算了,有哪位同学能帮忙封装一下的感激不尽

使用cb_all_small_event是checkbox,自己find或者@BindView一下

        cb_all_small_event.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               //判断是不是选中
                if (cb_all_small_event.isChecked()) {
                    cb_all_small_event.setChecked(true);//打勾
                    anl_relatedtypelist_small.removeAllViews();//清空view
                    EventSmallList(eventSmallArrayList, true);//重新添加,trun为全选
                } else {
                    anl_relatedtypelist_small.removeAllViews();
                    cb_all_small_event.setChecked(false);
                    EventSmallList(eventSmallArrayList, false);//重新添加,false为全取消
                }
            }
        });

核心部分

    private void EventSmallList(List<EventSmall> les, boolean tf) {
        les_num = les.size();//这个十分重要,是获取这个list大小的,当选择满的时候触发全选,不满足的时候就取消全选
        event_type.clear();
        for (EventSmall pp : les) {//下面就是循环创建的过程
            esl = new EventSmall();
            String type_id = pp.getEvent_type_id();
            String type_name = pp.getEvent_type_name();
            esl.setEvent_type_id(type_id);
            esl.setEvent_type_name(type_name);
            NewEventSmall(type_name, type_id, tf);
        }
    }
private void NewEventSmall(String type_name, String type_id, boolean tf) {
        //设置大小
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);
        LinearLayout project = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.item_checkbox, null);
        project.setLayoutParams(lp);
        LinearLayout ll_checkbox = (LinearLayout) project.findViewById(R.id.ll_checkbox);
        CheckBox cb_event_kind_name = (CheckBox) ll_checkbox.findViewById(R.id.cb_event_kind_name);
        TextView tv_event_kind_id = (TextView) ll_checkbox.findViewById(R.id.tv_event_kind_id);
        cb_event_kind_name.setText(type_name);
        tv_event_kind_id.setText(type_id);
        if (tf) {//是否全选,全选的话,这边创建的时候都会勾选
            cb_event_kind_name.setChecked(true);
        } else {
            cb_event_kind_name.setChecked(false);
        }
        anl_relatedtypelist_small.addView(project);//添加到布局
        //checkbox的点击
        cb_event_kind_name.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    event_type.add(type_id);
                    if (les_num == event_type.size()) {//判断是否全选
                        cb_all_small_event.setChecked(true);
                    } else {
                        cb_all_small_event.setChecked(false);
                    }
                } else {
                    event_type.remove(type_id);
                    cb_all_small_event.setChecked(false);
                }
            }
        });
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值