参考文章
Android 的接口回调,接口回调,既然是回调,就一定要把接口作为参数传递到 构造函数里/ 或者单独提供一个方法,供外界使用的。自己写的话,就都放到构造函数里,无论是 Activity/Adapter之间,还是 Activity/Fragment/Adapter之间,都用 构造函数来传递(把接口放到构造函数里),以匿名内部类的形式实现接口回调,要 单独提供一个方法,其他的,
别人写的,向外提供公共方法的,能看懂就行
1 接口回调概述
在 Android开发中,很多地方都用到了回调。
回调就是 把 方法的定义
和 功能导入实现
分开的一种机制,目的是为了解耦
。
它的本质是基于 观察者模式
,即观察者设计模式的的简化版。
在下载时候的进度回调,在adapter与activity之间的回调,在javabean和fragment以及fragment之间的回调等等
回调的目的主要有两个:1 传递数据 2 保持数据的同步更新
常用有两种形式:1 使用内部类的形式,得到接口的子类对象 2 直接实现定义的接口
2 内部类形式
- 在需要传递数据的一端定义一个接口,接口里面定义需要监听的方法以及参数
- 定义一个接口类型的变量存储数据
- 创建一个公共的方法,让外部调用,并且传递接口类型的参数,给其定义的接口类型的数据初始化
- 在合适的位置调用接口里面的方法,传递数据
- 在需要获取数据的地方,创建对象调方法
// 1 定义一个接口
public interface onListener{
void OnListener(String code,String msg);
}
// 2 定义一个变量 存储数据
private onListener listener;
// 3 提供 公共的方法,并且初始化接口类型的数据
public void setListener(onListener Listener){
this.listener = listener;
}
// 4 在合适的位置调用接口里面的方法,传递数据
if(listener != null){
listener.OnListener(rtncode,rtnmsg);
}
// 5 在需要获取数据的地方,创建对象调用方法
Print print = new Print();
print.setListener(new