首页 > 学院 > 开发设计 > 正文

接口回调——分享项目开发中的接口回调demo

2019-11-09 18:15:36
字体:
来源:转载
供稿:网友

最近在做一个教育类的项目,在开发中大量使用了接口回调来完成网络请求传递数据,特意在这里分享一下自己的心得。

首先官方对接口回调的定义是这样的,所谓回调:就是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);            }        });    }}to


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表