这篇文章主要介绍了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中关于接口回调的实例代码分享的详细内容。