java 接口回调实例详解
java接口回调实例详解
首先官方对接口回调的定义是这样的,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。这样听起来有点绕,我们可以这么理解接口回调:比如我们想知道隔壁老王啥时候回家?但是我们有自己的事情做不能一直监视着老王,那么我们可以雇员小区的保安来完成这个任务,当老王回家口,保安就给我们打电话告诉我们,老王回来了!这样就完成了一个事件的传递;
首先我们定义了一个接口:
publicinterfaceDynamicMessageListener{ /** *获取网络数据, *@parambeanbean对象 */ voidgetDynamicData(Listbean,booleanisMore); }
定义一个类实现这个接口:
publicclassDynamicFragmentextendsFragmentimplementsDynamicMessageListener{ //初始化监听者 privateDynamicMessageListenerlistener; /** *获取网络数据 * *@parambeanbean对象 */ @Override publicvoidgetDynamicData(Listbean,booleanisMore){ if(bean!=null&&bean.size()>0){ if(!isMore){ adapter=newDynamicAdapter(mContext,bean,this,classID); friendLv.setAdapter(adapter); adapter.setListener(this); LLog.e("activity------有数据"); }else{ adapter.setData(bean); } } } }
在网络请求层调用上面的方法:
publicclassDynamicModelextendsBaseModel{ privateContextmContext; privateNetUtilsnet; privateDynamicMessageListenerlistener; publicDynamicModel(ContextmContext,DynamicMessageListenerlistener){ this.mContext=mContext; net=NetUtils.getInstance(); this.listener=listener; } /** *加载网络数据, *@paramurl网络url *@paramparams请求网络携带的参数 */ publicvoidloadData(Stringurl,RequestParamsparams){ net.sendGetRequest(url,params,newNetUtils.NetUtilsCallBack(){ @Override publicvoidgetNetdata(Stringjson){ if(json!=null){ Gsongson=newGson(); DynamicBeanbean=gson.fromJson(json,DynamicBean.class); Listdata=bean.getData(); listener.getDynamicData(data,false); if(data==null||data.size()<=0){ listener.friendsNoData(false); LLog.e("没有数据-----"); } } } @Override publicvoidloadError(inta){ showError(a,mContext); } }); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!