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);
}
});
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!