最近在做一個教育類的項目,在開發中大量使用了接口回調來完成網絡請求傳遞數據,特意在這里分享一下自己的心得。
首先官方對接口回調的定義是這樣的,所謂回調:就是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
新聞熱點
疑難解答