写一个接口,在你需要调用的地方创建这个接口的一个实例,将这个实例拍到你需求的数据所在的类中去接受数据,然后通过接口中的抽象方法将你所需要的数据传递回来。可以分为内部接口和外部接口。
原理:抽象方法,在外面被调用时会调用实现这个抽象接口的具体方法,这就叫做接口回调
1.外部接口类型。
a.创建一个抽象类(接口类),创建抽象方法,将你需要的数据放在方法的参数中。
p:这里我们需要 一个图片数据和String 类型的数据
public interface OnBitmapCallBack {
public void OngetBitmap(Bitmap bitmap);
public void OnGetBitmapFailure(String str);
}
b.在需要这些数据的类中去(数据需求类)实现这个抽象方法,并将这个实例传到能够获取到数据的那个类中去。
p:写一个方法让这个接口实例实例能在获取数据的类中获取,可以是直接New 一个数据对象类 将这个接口实例直接传过去(详见方法二)。
public class NewsAdapter implements OnBitmapCallBack{
1.把接口的实例传递到数据对象类中去。
new Bitmap().set
setOnGetBitmapCallBack(this);
// 此处和监听点击事件类似。
2.重写接口中的抽象方法。
@Override
public void OngetBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
}
@Override
public void OnGetBitmapFailure(String str) {
Toast.makeText(context, str, 0).show();
}
}
c 在装有数据的类(数据对象类)中通过传过来的这个接口的实例将数据传递过去。
创建需要获取的数据。
Bitmap bitmap= new bitmap();
String str = "我们需要获取的数据"
1.创建接口对象。
public class BitmapLoad {
private OnBitmapCallBack back ;
2.写一个方法将数据需求类的接口类实例获取到。
public void setOnGetBitmapCallBack(OnBitmapCallBack back){
this.back = back;
}
3.将需要的的数据传递过去。
p:通过传过来的这个实例调用这个实例的方法,从而将数据对象类中的数据参数传递到这个实例的具体方法中去,让数据需求类中数据接收到。
back.
OngetBitmap(bitmap )
//将方法回调回去
back.OnGetBitmapFailure(str)
}
2.内部接口类型。
a.数据需求类
public class NewsAdapter implements OnBitmapCallBack{
1.需要获取的对象
Bitmap bitmap;
String str;
2.创建内部接口
interface onGetBittmapCallBack {
public void OngetBitmap(Bitmap bitmap);
public void OnGetBitmapFailure(String str);
}
3.创建一个数据接收类让
BitmapLoad bitmap =new BitmapLoad(new onGetBittmapCallBack() {
@Override
public void OngetBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
}
@Override
public void OnGetBitmapFailure(String str) {
this.str =str;
}
});)
b.数据对象类
public class BitmapLoad {
1.数据对象
Bitmap bitmap = new Bitmap();
String str = “我是需要被接收的数据”;
private onGetBittmapCallBack callBack;
2.通过构造方法获取接口对象
public bitmap(onGetBittmapCallBack callBack){
this.callBack =callBack;
}
3.通过接口对象调用抽象方法实现接口回调
callBack.OngetBitmap(bitmap)
callBack.
OnGetBitmapFailure(String str)
}