這篇文章主要介紹了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中關於介面回呼的實例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!