一、事件监听

对于普通的Button,对其进行事件监听Google官方给出了常见的三种监听方式:1、对每一个button设置事件监听器button.setOnClickListener(View.OnclickListener  listener);此种方法当button按钮较多时代码显得多、乱、不够简洁明了。

2、在Activity中实现接口View.OnclickListener,然后重写void onClick(View v)方法,在方法中通过switch(v.getId())予以区分不同Button。此种方法较为简洁,但是需要实现View.OnclickListener接口。3、在xml布局中在想要被监听的

button上添加属性:android:onClick=”doClick”属性。在Activity 中添加监听方法public void doClick(View view){},此种方法书写简单、明了、不需要实现额外的接口。推荐使用此种方法。也是Google官方文档中常见用法。

对于状态切换控件CompoundButton,不仅要对事件触发的监听,还有对状态切换的监听。所以在CompoundButton中需要对其进行两个监听:事件触发、状态切换。监听的方式与普通Button三种监听方式相似。只不过是多了一个监听状态的一项

而已。说多了都是废话,还是直接上码。

场景一:对UI界面上多个CompoundButton的事件监听做统一处理。

<ToggleButtonandroid:id="@+id/togglebutton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:textOff="关"android:textOn="开" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><CheckBoxandroid:id="@+id/checkbox_meat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="肉" /><CheckBoxandroid:id="@+id/checkbox_cheese"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="奶" /></LinearLayout><RadioGroupandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><RadioButtonandroid:id="@+id/radiobutton_add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="增" /><RadioButtonandroid:id="@+id/radiobutton_delete"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="刪" /><RadioButtonandroid:id="@+id/radiobutton_update"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="改" /><RadioButtonandroid:id="@+id/radiobutton_seach"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="查" /></RadioGroup>

有了布局,下面上Java代码对其所有的CompoundButton控件进行统一监听

/*** 向上转型的目的是为了获取子控件当前状态。* @param view*/public void doClick(View view) {//1、被选中:toogle中isChecked==onboolean isChecked=((CompoundButton)view).isChecked();//向上转型:获取当前状态//2、被点击switch (view.getId()) {case R.id.togglebutton:if(isChecked){Log.i("MyInfo", "开");}else{Log.i("MyInfo", "关");}break;case R.id.checkbox_meat:if(isChecked){Log.i("MyInfo", "肉被选中");}else{Log.i("MyInfo", "肉被取消");}break;case R.id.checkbox_cheese:break;case R.id.radiobutton_add://切记:RadioButton无状态的切换,仅有按钮的切换。所以仅需判断选中状态 if(isChecked)if(isChecked)break;case R.id.radiobutton_delete:if(isChecked)break;case R.id.radiobutton_update:if(isChecked)break;case R.id.radiobutton_seach:if(isChecked)break;default:break;}}

在doClick()方法中总体上执行了两个步骤:1被选中---->2被点击。通常这两个步骤先后顺序应该为被点击----->被选中。但是这样需要对每一个子控件分支中都需要添加是否被选中的判断,代码显得重复。

所以在此我们使用逆向被点击----->被选中。在被选中这一步中使用一个向上转型是为了可以获取所有CompoundButton子类的状态。如果直接强转为某一具体子类,则不具备通用性,不适应判断所有CompoundButton

子类的被选中状态。

当UI界面中状态切换控件CompoundBuuton与普通Button均存在的情况下,建议对两种控件的使用不同的方法进行监听,例如:android:onClick=”compoundButtonClick”与android:onClick=”buttonClick”

二、CompoundButton扩展

---未完待续

转载于:https://www.cnblogs.com/android001/p/4311558.html

[基础控件]---状态切换控件CompoundButton及其子类CheckBox、RadioButton、ToggleButton、switch事件监听与场景使用...相关推荐

  1. jquery实现上下左右键盘监听_基于 jQuery 实现键盘事件监听控件

    最近项目里要做一个画板,需要对键盘事件进行监听,来进行诸如撤回.重做.移动.缩放等操作,因此顺手实现了一个键盘事件监听控件,期间略有收获,整理出来,希望对大家有所帮助,更希望能获得高手的指点. 1. ...

  2. 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定

    四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...

  3. maptalks常见操作——图层置顶置底、添加清空图层、添加标注、切换底图、添加缩放工具、事件监听(点击面出弹框)、右键菜单、绘制mark、锁定视角

    maptalks常见操作--图层置顶置底.添加清空图层.添加标注.切换底图.添加缩放工具.事件监听(点击面出弹框).右键菜单.绘制mark.锁定视角 1.图层置顶 置底 layer.show().br ...

  4. JAVA JFrame画图基础和事件监听

    JFrame画图基础和事件监听 消息框 JOptionPane.showMessageDialog(mine.this, "删除不成功!"); 画图 class MyJPanel ...

  5. java swing(GUI图形化界面)基础教程3-添加事件监听1

    学习此内容前建议先去学习java基础知识: 匿名内部类 (学的多的可以用lambda表达式,更加简便) 好, 我们先看一下之前的代码(即一个窗口和一个按钮) 如果想看详细内容,链接为: (23条消息) ...

  6. RecyclerView控件实现横向滚动和瀑布流布局,以及RecyclerView的点击监听(项目已上传GitHub)

    先附上我的GitHub项目地址: https://github.com/Skymqq/RecyclerViewTest.git 我们已经知道,ListView的拓展性不好,它只能实现纵向的滚动的效果, ...

  7. easyui控件事件监听委托给jquery事件监听,keyup取最新值问题

    <div id="<?php echo NS; ?>toolbar"><div style="padding:5px">&l ...

  8. JS-事件-写一个通用的事件监听函数

    之前学习总是遇到问题再去研究表面知识,这是不可取的,在这里我们来写一个绑定事件的函数,以此巩固我们对JS事件相关知识点的理解 在这里我会解释一下各个参数之间的关系 function bindEvent ...

  9. JavaScript 基础--- (正则表达式 / 事件监听与绑定)

    正则表达式 创建正则表达式: 方法一: var reg = /pattern/; 方法二:var reg = new RegExp('pattern'); RegExp 对象的常用方法: 示例: &l ...

  10. 【学姐面试宝典】前端基础篇Ⅴ——JS深浅拷贝、箭头函数、事件监听等

    前言 博主主页

最新文章

  1. springboot运行jar包时候加载指定目录的其他jar支持包
  2. 问题解决:使用angularjs、ionic框架如何实现返回上一页并刷新
  3. 菜鸟程序员如何提升自己的潜在价值
  4. Oracle 数据库自动诊断库 ADR(Automatic Diagnostic Repository)简介
  5. 客户端连接故障检查流程手段
  6. [转]跨库数据表复制
  7. Qt直接运行生成的exe文件提示“缺少Qt5Core.dll”的解决办法
  8. 微信小程序使用腾讯地图
  9. java通过TscLibDll调用佳博热敏票据打印机(580130IVC)打印小票
  10. 使用RMAN备份与恢复数据库(1)——RMAN基本命令
  11. ADS(Advanced Design system)原理图结合板层结构仿真(MSub)及版图仿真(EM Simulation)
  12. PHP从基础到高级总结
  13. PowerBuilder 计算器
  14. ABB机器人外部轴电机配置(MU系列)
  15. 2019426 SPSS入门学习
  16. 偶然发现的写参考文献的利器(超快搜索+快捷摘要总结)、文末再讲一下EndNote的使用心得
  17. 2023王道数据结构P40题二.1,关于是否会断链的问题
  18. 全球及中国光电传感器行业商业模式分析及投资风险预测2022年版
  19. 抖音做直播有哪些技巧,抖音新手直播应该注意什么:国仁楠哥
  20. 安防三国,三分天下。

热门文章

  1. 32位win10服务器系统,win10原版32位
  2. U盘PE安装原版Win10系统
  3. win10多合一原版系统_制作WIN10多合一原版系统工具下载
  4. 软件项目验收测试报告-软件项目验收流程
  5. 栅栏密码加密/解密【传统型】在线工具
  6. 2021-03-03
  7. 私教课程 Day2 2017-09-14
  8. jsp java session_JSP Session
  9. 百度Python面试题
  10. MATLAB R2016a 简单介绍