Android的回调模拟
2015-11-06 18:09
417 查看
想要彻底理解安卓中用的回调,最好的办法是自己写一个类似的实现安卓中回调功能的实现方法。
我自己写了一个可以实现setOnClickListener回调的工程:
具体目录:
工程源码的具体地址:http://pan.baidu.com/s/1c0hWPkk ,
View.java:模拟的是Android中的View控件,
OnClickListener.java,是一个接口,
测试类:
运行结果:
v1控件的类型是:ListView
我自己写了一个可以实现setOnClickListener回调的工程:
具体目录:
工程源码的具体地址:http://pan.baidu.com/s/1c0hWPkk ,
View.java:模拟的是Android中的View控件,
package com.wyl.ximahui; public class View { public OnClickListener listener; public String type; /** * 两个参数的构造器 * * @param listener * @param type */ public View(OnClickListener listener, String type) { super(); // this.listener = listener; this.type = type; } public View(String type) { super(); this.type = type; } /** * 一个参数的构造器 * * @param listener * 传入的对象为一个接口, */ public View(OnClickListener listener) { super(); this.listener = listener; } public OnClickListener getListener() { return listener; } /** * 这个方法尤其重要,这个set方法的重要性在于给View对象的成员变量传入接口实例对象, * 如果不传入的话那么在点击View控件的时候就无法调用接口对象的OnClick()方法, * @param listener */ public void setListener(OnClickListener listener) { // 左侧:View对象的成员变量,右侧:一个OnClickListener接口类型的变量,在真正的方法调用中,就是一个OnClickListener接口类型的对象 this.listener = listener; } public String getType() { return type; } public void setType(String type) { this.type = type; } /** * Click()方法模拟button的点击事件,一点击就会触发接口的OnClick()方法 */ public void Click() { if (listener != null) { /* * 只有View对象(控件对象,比如button等)的成员变量listener不为空的时候 * 回调listener接口对象的OnClick方法,这个方法的入参恰恰是View类型的变量 */ listener.Onclick(this); } else { // 如果View对象(控件对象,比如button等)的成员变量listener为空(即不给View传入接口对象),那么捕获,否则会报错 System.out.println("要先注册listener...."); return; } } }
OnClickListener.java,是一个接口,
package com.wyl.IntP; import com.wyl.component.View; /** * 模拟Android中的OnClickListener接口, * 这个接口中只有一个OnClick()方法, * @author Administrator * */ public interface OnClickListener { public void Onclick(View view); }
测试类:
package com.wyl.test; import com.wyl.IntP.OnClickListener; import com.wyl.component.View; public class TestClick { public static void main(String[] args) { View v1 = new View("ListView"); v1.setListener(new OnClickListener() { @Override public void Onclick(View view) { // TODO Auto-generated method stub System.out.println("v1控件的类型是:" + view.getType()); } }); v1.Click();//Click()相当于Android中点击一个button的时候触发的事件,模拟点击事件 } }
运行结果:
v1控件的类型是:ListView
相关文章推荐
- Android帧动画与补间动画
- android中的数据保存
- Android 多渠道打包详细教程(一)-ant
- Android studio 快捷键
- Android 4.03 编译系统------lunch
- Android---ViewPager循环滑动+自动滑动
- android_01Activity_知识小结
- 判断当前android系统的尺寸。用来区分平板和手机,亲测。
- 【Android】如何调节屏幕亮度,关闭屏幕
- 详解:Android嵌套滑动机制 (NestedScrolling)
- 详解:Android嵌套滑动机制 (NestedScrolling)
- Android 之 内存管理
- 【Android】Broadcast控制音乐暂停继续等
- [Android] ImageView.ScaleType设置图解
- Android studio常用快捷键
- Android 从java字节码告诉你 为什么Handler会造成内存泄露
- Android RSA加密对象数据
- Android开发的那些坑和小技巧
- Android控件之Spinner
- Android初学习 - 国际化