欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 接口回调实例详解

程序员文章站 2023-11-30 12:04:34
java 接口回调实例详解 首先官方对接口回调的定义是这样的,所谓回调:就是a类中调用b类中的某个方法c,然后b类中反过来调用a类中的方法d,d这个方法就叫回调方法。这样...

java 接口回调实例详解

首先官方对接口回调的定义是这样的,所谓回调:就是a类中调用b类中的某个方法c,然后b类中反过来调用a类中的方法d,d这个方法就叫回调方法。这样听起来有点绕,我们可以这么理解接口回调:比如我们想知道隔壁老王啥时候回家?但是我们有自己的事情做不能一直监视着老王,那么我们可以雇员小区的保安来完成这个任务,当老王回家口,保安就给我们打电话告诉我们,老王回来了!这样就完成了一个事件的传递;

首先我们定义了一个接口:

public interface dynamicmessagelistener { 
/** 
 * 获取网络数据, 
 * @param bean bean 对象 
 */ 
void getdynamicdata(list<dynamicbean.databean> bean, boolean ismore); 
} 

    定义一个类实现这个接口:

public class dynamicfragment extends fragment implements dynamicmessagelistener { 
//初始化监听者 
  private dynamicmessagelistener listener; 
/** 
   * 获取网络数据 
   * 
   * @param bean bean 对象 
   */ 
 
  @override 
  public void getdynamicdata(list<dynamicbean.databean> bean, boolean ismore) { 
    if (bean != null && bean.size() > 0) { 
      if (!ismore) { 
        adapter = new dynamicadapter(mcontext, bean, this, classid); 
        friendlv.setadapter(adapter); 
        adapter.setlistener(this); 
        llog.e("activity------有数据"); 
      } else { 
        adapter.setdata(bean); 
      } 
 
    } 
 
  } 
} 

    在网络请求层调用上面的方法:

public class dynamicmodel extends basemodel { 
 
 
  private context mcontext; 
  private netutils net; 
  private dynamicmessagelistener listener; 
 
  public dynamicmodel(context mcontext, dynamicmessagelistener listener) { 
    this.mcontext = mcontext; 
    net = netutils.getinstance(); 
    this.listener = listener; 
  } 
/** 
   * 加载网络数据, 
   * @param url  网络url 
   * @param params 请求网络携带的参数 
   */ 
  public void loaddata(string url, requestparams params) { 
    net.sendgetrequest(url, params, new netutils.netutilscallback() { 
      @override 
      public void getnetdata(string json) { 
        if (json != null) { 
          gson gson = new gson(); 
          dynamicbean bean = gson.fromjson(json, dynamicbean.class); 
          list<dynamicbean.databean> data = bean.getdata(); 
          listener.getdynamicdata(data, false); 
          if(data ==null||data.size() <=0 ){ 
            listener.friendsnodata(false); 
            llog.e("没有数据-----"); 
          } 
        } 
      } 
      @override 
      public void loaderror(int a) { 
        showerror(a, mcontext); 
      } 
    }); 
  } 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!