java 接口回调实例详解
作者:lqh 发布时间:2023-11-19 15:44:24
标签: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);
}
});
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/aj2722465/article/details/54882712


猜你喜欢
- 前言:数据抽象是一种仅向用户显示基本细节的属性。不向用户显示琐碎或非必需的单元。例如:汽车被视为汽车而不是其单个组件。数据抽象也可以定义为仅
- 1、JDK1.8之前:假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中。(例子不是很恰当,但很能说明
- LocalDate类第一种:直接生成当前时间 LocalDate date = LocalDate.now();
- 内存模型Flink可以使用堆内和堆外内存,内存模型如图所示:flink使用内存划分为堆内内存和堆外内存。按照用途可以划分为task所用内存,
- 想要在Ubuntu上运行java程序,可以将java程序编译成功后打包,然后在Ubuntu上用命令执行jar文件具体操作如下:1、Windo
- 一、简介Join方法主要是用来阻塞调用线程,直到某个线程终止或经过了指定时间为止。官方的解释比较乏味,通俗的说就是创建一个子线程,给它加了这
- android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 Translat
- 废话不多说,直接上代码import java.text.SimpleDateFormat; import java.util.Date;/*
- 本文实例为大家分享了android surfaceView实现播放视频的具体代码,供大家参考,具体内容如下RelativeLayout<
- Spring-Context的作用spring-context提供应用程序上下文,这是Spring的依赖注入容器,它可能总是在以某种方式使用
- 定义单一职责原则(Single Responsibility Principle, SRP),有且仅有一个原因引起类的变更。简单来说,就是针
- 项目信息使用SpringBoot web框架,版本号 2.7.10<dependency><groupId>org.
- 什么是进程?当一个程序被打开运行时,它就是一个进程。在进程中包括线程,进程可以由一个或多个线程组成。什么是线程?线程是程序执行流的最小单元。
- 实现代码一、import java.io.File;import java.io.*;public class DelNullDir {pu
- 1. Retrofit使用Retrofit是一个现在网络请求框架,先来说一下怎么使用网络权限(添加到AndroidManifest.xml)
- 背景原生的TextView是支持跑马灯效果的,但是在项目中实际用了之后,达不到需求,原因是内容滚动太慢,速度无法调节。因此,需要自定义一个可
- Java 执行CMD命令或执行BAT批处理背景日常开发中总能遇到一些奇怪的需求,例如使用java执行cmd命令或者bat批处理文件,今天就简
- 网上文章虽多,但是这种效果少之又少,我真诚的献上以供大家参考实现原理:自定义ImageView对此控件进行相应的layout(动态布局).这
- 性能优化的帮助工具:MAT,Memory Monitor(属于AndroidMonitor中一个模块),HeapTool(查看堆
- 大家好,因为近期做需求中遇到了文件上传这个东西,而且我这个还是跨服务去传输文件的所以我这边使用了httpclient和RestTemplat