接口回调

来源:互联网 发布:零基础学软件编程 编辑:程序博客网 时间:2024/06/05 15:49
写一个接口,在你需要调用的地方创建这个接口的一个实例,将这个实例拍到你需求的数据所在的类中去接受数据,然后通过接口中的抽象方法将你所需要的数据传递回来。可以分为内部接口和外部接口。
原理:抽象方法,在外面被调用时会调用实现这个抽象接口的具体方法,这就叫做接口回调

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().setsetOnGetBitmapCallBack(this);
// 此处和监听点击事件类似。
2.重写接口中的抽象方法。
@Override
 public void OngetBitmap(Bitmap bitmap) {
  this.bitmap = bitmap;    
 }
 @Override
 public void OnGetBitmapFailure(String str) {
  Toast.makeText(context, str, 0).show();
 }
}

在装有数据的类(数据对象类)中通过传过来的这个接口的实例将数据传递过去。
创建需要获取的数据。
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)
         }

0 0
原创粉丝点击