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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值