码迷,mamicode.com
首页 > 移动开发 > 详细

Android的回调模拟

时间:2015-11-06 19:19:54      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

  想要彻底理解安卓中用的回调,最好的办法是自己写一个类似的实现安卓中回调功能的实现方法。

我自己写了一个可以实现setOnClickListener回调的工程:

具体目录:技术分享

工程源码的具体地址:http://pan.baidu.com/s/1c0hWPkk ,

View.java:模拟的是Android中的View控件,

 1 package com.wyl.component;
 2 
 3 import com.wyl.IntP.OnClickListener;
 4 
 5 public class View {
 6     public OnClickListener listener;
 7     public String type;
 8 
 9     /**
10      * 两个参数的构造器
11      * @param listener
12      * @param type
13      */
14     public View(OnClickListener listener, String type) {
15         super();
16         // this.listener = listener;
17         this.type = type;
18     }
19 
20     public View(String type) {
21         super();
22         this.type = type;
23     }
24 
25     /**
26      * 一个参数的构造器
27      * 
28      * @param listener
29      *            传入的对象为一个接口,
30      */
31     public View(OnClickListener listener) {
32         super();
33         this.listener = listener;
34     }
35     
36     public OnClickListener getListener() {
37         return listener;
38     }
39     /**
40      * 这个方法尤其重要,
41      * @param listener
42      */
43     public void setListener(OnClickListener listener) {
44         this.listener = listener;
45     }
46 
47     public String getType() {
48         return type;
49     }
50 
51     public void setType(String type) {
52         this.type = type;
53     }
54 
55     /**
56      * Click()方法模拟button的点击事件,一点击就会触发接口的OnClick()方法
57      */
58     public void Click() {
59         if (listener != null) {
60             /*
61              * 只有View对象(控件对象,比如button等)的成员变量listener不为空的时候
62              * 回调listener接口对象的OnClick方法,这个方法的入参恰恰是View类型的变量
63              */
64             listener.Onclick(this);
65         } else {
66             //如果View对象(控件对象,比如button等)的成员变量listener为空,那么捕获,否则会报错
67             System.out.println("要先注册listener....");
68             return;
69         }
70     }
71 }

 

OnClickListener.java,是一个接口,

 1 package com.wyl.IntP;
 2 
 3 import com.wyl.component.View;
 4 /**
 5  * 模拟Android中的OnClickListener接口,
 6  * 这个接口中只有一个OnClick()方法,
 7  * @author Administrator
 8  *
 9  */
10 public interface OnClickListener {
11     public void Onclick(View view);
12 }

 

 

测试类:

 1 package com.wyl.test;
 2 
 3 import com.wyl.IntP.OnClickListener;
 4 import com.wyl.component.View;
 5 
 6 public class TestClick {
 7     public static void main(String[] args) {
 8         View v1 = new View("ListView");
 9         v1.setListener(new OnClickListener() {
10 
11             @Override
12             public void Onclick(View view) {
13                 // TODO Auto-generated method stub
14                 System.out.println("v1控件的类型是:" + view.getType());
15             }
16         });
17         v1.Click();//Click()相当于Android中点击一个button的时候触发的事件,模拟点击事件
18     }
19 }

运行结果:

v1控件的类型是:ListView

 

Android的回调模拟

标签:

原文地址:http://www.cnblogs.com/Sunnor/p/4943324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!