在Android的开发中,对于点击事件的OnClickListener有下面四种实现方式,可以根据实际场景的需要选择合适的用法。下面以Button按钮来举例说明。

方法一:

适合场景:任何场景都通用,但对于一个Activity中要是有多个控件要实现onClick方法就会显得代码冗余。 Button bt_Demo = (Button)findViewById(R.id.bt_Demo); bt_Demo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //具体点击操作的逻辑 } });

方法二:

适合场景:适合有多个同类型控件(比如Button数组)要实现onClick()方法时使用Button[] demoBtns ;……for(Button button : demoBtns ){ button.setOnClickListener(listener);} private OnClickListener listener = new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch(arg0.getId()){ case R.id.btn_Demo: //具体点击操作的逻辑 break; default: break; } } }

方法三:

适合场景:同方法二,两者差别不大Button bt_Demo = (Button)findViewById(R.id.bt_Demo); bt_Demo.setOnClickListener(new ButtonListener()); private class ButtonListener implements OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch(arg0.getId()){ case R.id.btn_Demo: //具体点击操作的逻辑 break; default: break; } } }

方法四:

适合场景:适合界面上有不同类型的控件,这种方式将所有控件的onClick方法在一个方法里面实现,看起来比较简洁

在Activity中实现OnClickListener接口: public class MyActivity extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //按纽 Button btn_Demo = (Button)findViewById(R.id.bt_Demo); bt_Demo.setOnClickListener(this); } @Override public void onClick(View v) { switch(arg0.getId()){ case R.id.btn_Demo: //具体点击操作的逻辑 break; default: break; } } }

方法五:

适合场景:通用场景,特别是某个控件的点击方法要实现的逻辑较复杂的时候使用。

在布局文件中加上android:onClick="方法名",对于有些控件(比如TextView)需要兼容旧的SDK API,还需要加上android:clickable="true"//在代码中实现onTextViewClick()方法即可。public void onTextViewClick(){ //具体点击操作的逻辑}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

android 响应点击事件,Android响应事件onClick方法的五种实现方式小结相关推荐

  1. android按钮点击变化,Android实现按钮点击效果(第一次点击变色,第二次恢复)...

    1.首先创建一个按钮 android:id="@+id/click" android:layout_width="fill_parent" android:la ...

  2. Android 让View 和 ViewGroup 同时响应点击或者长按事件

    面试的时候,被问到如何让View 和 其 父View 同时响应长按事件. 我还记得当时自己的回答,子View 里面 处理了长按事件,但是返回了false, 没有处理,然后会继续调用到父View 的长按 ...

  3. android 模拟点击localinstrumentation,Android Instrumentation模拟鼠标点击事件

    看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获.下面把具体的情况记录一下: 首先我们必须了解类 Instrumentation: Instrumen ...

  4. android viewgroup点击变色,Android ViewGroup事件分发

    上篇文章已经分析了Android的Touch事件分发.如果没看的建议先看一下.Android View的Touch事件分发. 接下来我们开始写几种场景,得出一个初步的执行顺序,然后我们按照这个顺序开始 ...

  5. android 模拟手指点击,『Android Tip』-- 模拟手势操作

    平时 Android 开发中总会遇到奇葩的功能或者需求,这里做个记录和积累,以便后面开发过程中遇到类似的问题,可以快速的解决.Android tips 前言 这个版本终于快结束了,历时一个月的时间,这 ...

  6. android view 点击变暗,Android应用开发Android ImageView点击变暗效果

    本文将带你了解Android应用开发Android ImageView点击变暗效果,希望本文对大家学Android有所帮助. < 自定义ImageView: 在ImageView中setPres ...

  7. android listview 点击获取焦点,android – ListView项目焦点行为

    我正在尝试创建一个EditText项目的ListView(使用自定义CursorAdapter),这样EditTexts最初看起来是不可编辑的,并且在长时间单击后变得可编辑.然后,用户将编辑EditT ...

  8. android textview点击部分,Android开发第二大控件,EditText的属性和使用方法

    EditText与TextView非常相似,它甚至与TextView 共用了绝大部分XML属性和方法.EditText与TextView的最大区别在于:EditText可以接受用户输入. 一.Edit ...

  9. android radiobutton 点击效果,Android RadioButton 的点击效果

    效果图 控件 android:divider="@drawable/wosim_rg_divider" android:showDividers="middle" ...

最新文章

  1. python封装api linux_python Socket编程-python API 与 Linux Socket API之间的关系
  2. 汇编:ZF(zero flag)标志位
  3. pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法
  4. Caffe学习系列(4):激活层(Activiation Layers)及参数
  5. fuzzy k means
  6. 选购光纤交换机时需要注意光模块的哪些配置?
  7. 睡眠音频分割及识别问题(七)--接口输入输出讨论
  8. Docker初级选手(一)
  9. java tomcat输出信息,java – 如何在Tomcat中记录stdout输出?
  10. 给notepad++添加右键菜单
  11. list的一些常见用法总结(实用干货收藏)
  12. 最适合Java初学者练手的项目【JavaSE项目-图书管理系统】
  13. 【笔记】EFCore SQLite 拼音汉字互换
  14. 如何保存网站上的背景图片
  15. Inside-out追踪技术浅析
  16. Zynga研发之道探秘:用数据说话
  17. ACCV 2020国际细粒度网络图像识别竞赛——正式开赛!
  18. c语言转义字符空格符号,C语言 转义符\t占用几个空格
  19. 图像处理之LSB Matching Revisited论文复现
  20. 归并排序 代码 + 讲解

热门文章

  1. 死磕 java同步系列之ReentrantReadWriteLock源码解析
  2. WCF 4.0 进阶系列 – 第十二章 实现单向操作和异步操作(下)
  3. python 高阶函数
  4. python web框架autoreload原理(以bottle为例)
  5. java ASM 分析类
  6. 【shiro】使用shiro搭建的项目,页面引用js,报错:Uncaught SyntaxError: Unexpected token ...
  7. 安装中文和英文man(c函数)
  8. linux之sed用法
  9. AlertDialog显示错误 Unable to add window token null is not for an application
  10. 毕业设计:Springboot实现疫情宿舍学生管理系统