android 设置监听,android中控件设置监听器详细讲解

什么是监听器?

监听器就是一个对象,该对象的类实现了指定的接口。

深入理解给控件设置监听器以及对控件事件的监控的实现过程

我们在点击控件的时候,如果设置了点击监听器(调用该控件的SetOnClickListener方法),就会调用监听器对象的相应方法(这里是onClick方法),也就实现了监听点击。拿TextView类来说,TextView对象中有实现了OnClickListener接口类型的对象mOnClickListener,和setOnClickListener方法。我们调用setOnClickListener方法时传入一个实现了OnClickListener接口类型的对象l到TextView对象中,setOnClickListener方法将l赋值给了mOnClickListener,这个过程就是设置监听器。当我们点击该TextView,TextView中的performClick方法会被执行,该方法中,判断mOnClickListener是否为null,如果不为null就调用mOnClickListener的onClick方法并且把触发点击事件的对象(也就是该TextView对象)传到onClick方法中,也就是调用我们传入的实现了OnClickListener接口类型的对象l的onClick方法, 也就是说,我们只要在对象l的类定义的onClick方法里面写入我们要响应的代码,就可以实现对点击事件的响应了TextView{ OnClickListener mOnClickListener; public void setOnClickListener(OnClickListener l) { mOnClickListener = l; } public boolean performClick() { if (mOnClickListener != null) { mOnClickListener.onClick(this); return true; } return false; }}

创建实现了OnClickListener接口的对象l

注意,这个OnClickListener接口是andorid.view.View包下面的接口在导入包的时候不要导错了

有两种方法创建实现了OnClickListener接口的对象,第一种是创建一个类实现OnClickListener接口,第二种是,通过接口实现的匿名内部类来创建对象。

方法一.创建一个类实现View.OnClickListener接口package com.yee4.helloworld;import android.view.View;import android.view.View.OnClickListener;public class TextViewClickListener implements OnClickListener { @Override public void onClick(View v) {//此处的v表示触发该点击事件的对象。 // TODO Auto-generated method stub System.out.println("TextView被点击了!"); }}

定义好了TextViewClickListener类后,创建TextViewClickListener类的对象,并调用helloWorldTextView的setOnClickListener方法把该对象传入给helloWorldTextView对象中的mOnclickListener属性,如果有点击事件,就会调用TextViewClickListener对象的onClick方法。protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView helloWorldTextView = (TextView) findViewById(R.id.helloWorldTextView); helloWorldTextView.setText("World Hello!"); TextViewClickListener textViewClickListener = new TextViewClickListener(); helloWorldTextView.setOnClickListener(textViewClickListener); }

运行程序,点击文字,会在LogCat中看到”TextView被点击了!”这段文字

方法二,通过接口实现的匿名内部类来创建对象。

直接在onCreate方法中,创建OnClickListener接口的匿名内部类对象protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView helloWorldTextView = (TextView) findViewById(R.id.helloWorldTextView); helloWorldTextView.setText("World Hello!"); helloWorldTextView.setOnClickListener(new View.OnClickListener() {//此处也是要注意导入OnClickListener包要导入android.view.View包@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("匿名内部类实现的监听TextView点击!");}}); }

运行程序点击后,在LogCat会出现”匿名内部类实现的监听TextView点击!”这段文字

监听器的种类:

OnLongClickListener:长按事件

OnClickListener:点击事件

监听点击事件的步骤:

1.创建一个类实现了相应的监听接口,并实现接口中的方法,在方法中添加触发事件后要做的操作

2.创建实现了相应的监听接口类的对象

3.调用控件的setOn…Listener()方法,把创建的实现了相应的监听接口类的对象传给该控件

本文转载于安卓杂谈网 http://www.yee4.com/blog/299.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值