java 接口回调实例详解

 更新时间:2017年07月19日 15:46:46   投稿:lqh  
这篇文章主要介绍了java 接口回调实例详解的相关资料,所谓回调就是使用java中的多态,需要的朋友可以参考下

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); 
      } 
    }); 
  } 
} 

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

相关文章

  • Java反射机制深入理解

    Java反射机制深入理解

    这篇文章主要介绍了Java反射机制深入理解的相关资料,希望通过本文大家能理解这部分内容,需要的朋友可以参考下
    2017-09-09
  • Java Map 按照Value排序的实现方法

    Java Map 按照Value排序的实现方法

    Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下
    2016-08-08
  • SpringBoot整合Sharding-JDBC实现MySQL8读写分离

    SpringBoot整合Sharding-JDBC实现MySQL8读写分离

    本文是一个基于SpringBoot整合Sharding-JDBC实现读写分离的极简教程,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的可以了解一下
    2021-07-07
  • 解决ResourceBundle.getBundle文件路径问题

    解决ResourceBundle.getBundle文件路径问题

    这篇文章主要介绍了解决ResourceBundle.getBundle文件路径问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • SpringBoot Pom文件依赖及Starter启动器详细介绍

    SpringBoot Pom文件依赖及Starter启动器详细介绍

    这篇文章主要介绍了SpringBoot Pom文件的依赖与starter启动器的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • springboot中报错Invalid character found in the request的解决

    springboot中报错Invalid character found in 

    这篇文章主要介绍了springboot中报错Invalid character found in the request的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • SpringBoot最简单的定时任务@Scheduler的使用及解读

    SpringBoot最简单的定时任务@Scheduler的使用及解读

    这篇文章主要介绍了SpringBoot最简单的定时任务@Scheduler的使用及解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • C语言中下标与指针的转换以及指向指针的指针的例子

    C语言中下标与指针的转换以及指向指针的指针的例子

    这篇文章主要介绍了C语言中下标与指针的转换以及指向指针的指针的示例,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • 利用java开发简易版扫雷游戏

    利用java开发简易版扫雷游戏

    这篇文章主要介绍了利用java开发一个丐版扫雷游戏,喜欢玩扫雷的小伙伴们一定要试试哦,对正在学习java开发的小伙伴们也有一定帮助,需要的朋友可以参考下
    2021-04-04
  • java 自己实现DataSource实现实例

    java 自己实现DataSource实现实例

    这篇文章主要介绍了java 自己实现DataSource实现代码的相关资料,需要的朋友可以参考下
    2017-05-05

最新评论