美文网首页
Android CheckBox多选、单选、全选、全不选

Android CheckBox多选、单选、全选、全不选

作者: hao_developer | 来源:发表于2019-11-19 10:31 被阅读0次

    效果图

    微信图片_20191119103005.jpg 微信图片_20191119103016.jpg 微信图片_20191119103021.jpg 微信图片_20191119103026.jpg

    问题

    CheckBox设置isCheck=true,会自动触发监听事件onCheckedChanged,从而导致里面方法会自动执行?


    解决方法

    可用把全选、全不选的CheckBox通过点击事件来实现选择

    
    /**
    * 全选  全不选 部分代码
    */
    var isAllChecked = false;//ture:全选   false:全不选
    
    cbAll.setOnClickListener(this)
    override fun onClick(v:View?){
        when(v?.id){
            R.id.cbAll ->{//全选  全不选
                  isAllChecked = !isAllChecked
                    if (isAllChecked) {//全选
                        cbReceivables.isChecked = true
                        cbActivity.isChecked = true
                        cbCash.isChecked = true
                        cbMemManagment.isChecked = true
                        cbDistribution.isChecked = true
                        cbStoreOper.isChecked = true
                    } else {//全不选
                        cbReceivables.isChecked = false
                        cbActivity.isChecked = false
                        cbCash.isChecked = false
                        cbMemManagment.isChecked = false
                        cbDistribution.isChecked = false
                        cbStoreOper.isChecked = false
                    }
            }
      }
    }
    
    
     /**
       * 单选的操作
      */
      cbActivity.setOnCheckedChangeListener(this)
      cbCash.setOnCheckedChangeListener(this)
      cbMemManagment.setOnCheckedChangeListener(this)
      cbDistribution.setOnCheckedChangeListener(this)
      cbStoreOper.setOnCheckedChangeListener(this)
    
     override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
            isAllCheck(isChecked)
        }
    
     /**
       * 判断是否全选
       */
        fun isAllCheck(isChecked: Boolean) {
            if (isChecked) {
                if (cbReceivables.isChecked && cbActivity.isChecked && cbCash.isChecked
                    && cbMemManagment.isChecked && cbDistribution.isChecked && cbStoreOper.isChecked
                ) {
                    cbAll.isChecked = true
                    isAllChecked = true
                }
            } else {
                cbAll.isChecked = false
                isAllChecked = false
            }
        }
    

    相关文章

      网友评论

          本文标题:Android CheckBox多选、单选、全选、全不选

          本文链接:https://www.haomeiwen.com/subject/bsqwictx.html