这里写自定义目录标题

  • CheckBox选中状态改变
    • 一、背景
    • 二、源码分析
    • 三、总结:

CheckBox选中状态改变

一、背景

分配了一个编写checkbox通用控件的任务,有一个要求是希望可以在状态发生改变的时候去拦截

在网上没有找到比较有价值的参考,导师给了些思路,现在来分析一下checkbox点击之后的整个流程

二、源码分析

继承关系

CheckBox -> CompoundButton -> Button -> TextView -> View

其中,CompoundButton实现了Checkable接口,推测选中事件是在CompoundButton中具体实现的

CompoundButton重要属性和方法:

    private boolean mChecked;private OnCheckedChangeListener mOnCheckedChangeListener;private OnCheckedChangeListener mOnCheckedChangeWidgetListener;@Overridepublic void setChecked(boolean checked) {if (mChecked != checked) {......mChecked = checked;  //控件状态真实改变refreshDrawableState(); //状态改变了要更新显示的资源......mBroadcasting = true;    //不是很明白这里为什么要先true 后 falseif (mOnCheckedChangeListener != null) {mOnCheckedChangeListener.onCheckedChanged(this, mChecked);}if (mOnCheckedChangeWidgetListener != null) {mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked);}......mBroadcasting = false;}}@Overridepublic void toggle() { //控件状态改变setChecked(!mChecked);}@Overridepublic boolean performClick() { //执行点击事件的常规操作,问题是 它是从何处调用的toggle();......}@Overridepublic boolean isChecked() {return mChecked;}

三、总结:

控件的选中状态改变是在setChecked()方法中,有三种方法调用setChecked()

  1. 直接调用
  2. toggle()调用
  3. peformClick()调用toggle()间接调用

CheckBox选中状态改变相关推荐

  1. 使用jquery判断及改变checkbox选中状态

    使用jquery判断及改变checkbox选中状态 https://jingyan.baidu.com/article/fea4511a00f66af7ba912560.html

  2. html中radio、checkbox选中状态研究(静下心来看,静下心来总结)

    html中radio.checkbox选中状态研究(静下心来看,静下心来总结) 一.总结 1.单选框的如果有多个checked 会以最后一个为准 2.js动态添加checked属性:不行:通过 $(& ...

  3. 获取与设置checkbox选中状态

    获取checkbox被选中状态值:$("#id").prop('checked'); 设置checkbox选中状态:$("#id").attr('check', ...

  4. 获取checkbox选中状态的两种方式_张童瑶的博客

    获取checkbox选中状态的两种方式 获取checkbox选中状态的两种方式 第一种方式 第二种方式 我的其他文章 我的其他网站 获取checkbox选中状态的两种方式 我在开发项目的时候遇到这个问 ...

  5. jQuery取消checkbox选中状态

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>jQu ...

  6. Android ListView中CheckBox选中状态失效的最佳解决方案

    Android ListView中CheckBox选中状态失效: 在ListView中某一项滑到显示区外部的时候,重新划回来时其中的CheckBox的选中状态会重置,本文提出了一种解决方案,操作起来快 ...

  7. checkbox jq 监听_「checkbox 选中事件」jquery checkbox 选中、改变状态、change 和 click 事件 - seo实验室...

    checkbox 选中事件 jquery判断checked的三种方法: ​​​​​​​ .attr('checked); //看版本1.6+返回:"checked"或"u ...

  8. Android实例-手机安全卫士(三十六)-根据Service是否开启确定CheckBox选中状态

    一.目标 1.根据service是否在后台运行情况来确定CheckBox的选中状态: 2.解决"设置中心"的"开启来电号码显示归属地"功能在退出程序再进入时选中 ...

  9. jQuery控制checkbox选中状态但是不显示选中

    问题描述:使用jQuery来控制checkbox的选中状态,但是第一次点击出现选中样式,之后点击可以看到checked的属性增加成功但是并没有选 中状态. 问题代码: function chooseA ...

最新文章

  1. 开源 免费 java CMS - FreeCMS1.9 全文检索
  2. 前端一HTML:十二:元素查找过程的详解
  3. Go: 字符串比较的三种方法
  4. 苹果错误分析报告preferreuserinterface_数据分析的六个步骤,你做到了吗?
  5. 二进制_简学:二进制数制的应用
  6. 当深度学习遇上图: 图神经网络的兴起!
  7. apache2.2:使一个目录允许执行cgi程序
  8. CANN AICPU算子耗时分析及优化探索
  9. echarts 大屏模板_年会策划万能模板 ,玩转年会看这篇!
  10. Eclipse代码自动补全设置
  11. 关于苹果Mac上设置固件密码的方法?
  12. 下载anaconda后配置环境变量
  13. 使用Apache Tika实现内容分析
  14. python角谷猜想递归实现_第三周函数的递归---编程作业: 递归编程练习
  15. c语言产生式系统动物识别系统,简单动物识别系统的知识表示实验报告
  16. Python Web前端实战案例——电商网站商品菜单导航栏
  17. 达梦7数据库数据守护集群 技术方案
  18. 指纹及设备检索:zoomeye(入门)
  19. Python启动器(py.exe)主版本次版本相同补丁版本不同解释器选择的异常问题
  20. 第一章 复数 1-3-复平面上的点集

热门文章

  1. chrome插件draw.io代替visio成为流程图架构图制作新的利器
  2. 上海计算机学院网上报名,上海市学历积分报名网,成年人考试网上报名
  3. OPenCV4-颜色识别(一)调色板和简单的颜色识别
  4. Python代码解析数据
  5. 服装行业如何利用长尾关键词挖掘推广?
  6. 考验逻辑思维能力的软件_23个经过时间考验的应用程序,可以管理您的远程软件开发团队...
  7. Halcon消除畸变
  8. 责任链模式实践之Zuul责任链模式
  9. python3.6和3.8_选择 Python3.6 还是 Python 3.7
  10. 极线几何关系、极点、极线,三维重构,k-d树的特征匹配方法