java 接口回調(diào)實(shí)例詳解
java 接口回調(diào)實(shí)例詳解
首先官方對(duì)接口回調(diào)的定義是這樣的,所謂回調(diào):就是A類中調(diào)用B類中的某個(gè)方法C,然后B類中反過(guò)來(lái)調(diào)用A類中的方法D,D這個(gè)方法就叫回調(diào)方法。這樣聽起來(lái)有點(diǎn)繞,我們可以這么理解接口回調(diào):比如我們想知道隔壁老王啥時(shí)候回家?但是我們有自己的事情做不能一直監(jiān)視著老王,那么我們可以雇員小區(qū)的保安來(lái)完成這個(gè)任務(wù),當(dāng)老王回家口,保安就給我們打電話告訴我們,老王回來(lái)了!這樣就完成了一個(gè)事件的傳遞;
首先我們定義了一個(gè)接口:
public interface DynamicMessageListener {
/**
* 獲取網(wǎng)絡(luò)數(shù)據(jù),
* @param bean bean 對(duì)象
*/
void getDynamicData(List<DynamicBean.DataBean> bean, boolean isMore);
}
定義一個(gè)類實(shí)現(xiàn)這個(gè)接口:
public class DynamicFragment extends Fragment implements DynamicMessageListener {
//初始化監(jiān)聽者
private DynamicMessageListener listener;
/**
* 獲取網(wǎng)絡(luò)數(shù)據(jù)
*
* @param bean bean 對(duì)象
*/
@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------有數(shù)據(jù)");
} else {
adapter.setData(bean);
}
}
}
}
在網(wǎng)絡(luò)請(qǐng)求層調(diào)用上面的方法:
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;
}
/**
* 加載網(wǎng)絡(luò)數(shù)據(jù),
* @param url 網(wǎng)絡(luò)url
* @param params 請(qǐng)求網(wǎng)絡(luò)攜帶的參數(shù)
*/
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("沒有數(shù)據(jù)-----");
}
}
}
@Override
public void loadError(int a) {
showError(a, mContext);
}
});
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Java Map 按照Value排序的實(shí)現(xiàn)方法
Map是鍵值對(duì)的集合接口,它的實(shí)現(xiàn)類主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。這篇文章主要介紹了Java Map 按照Value排序的實(shí)現(xiàn)方法,需要的朋友可以參考下2016-08-08
SpringBoot整合Sharding-JDBC實(shí)現(xiàn)MySQL8讀寫分離
本文是一個(gè)基于SpringBoot整合Sharding-JDBC實(shí)現(xiàn)讀寫分離的極簡(jiǎn)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2021-07-07
解決ResourceBundle.getBundle文件路徑問(wèn)題
這篇文章主要介紹了解決ResourceBundle.getBundle文件路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
SpringBoot Pom文件依賴及Starter啟動(dòng)器詳細(xì)介紹
這篇文章主要介紹了SpringBoot Pom文件的依賴與starter啟動(dòng)器的作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09
springboot中報(bào)錯(cuò)Invalid character found in
這篇文章主要介紹了springboot中報(bào)錯(cuò)Invalid character found in the request的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
SpringBoot最簡(jiǎn)單的定時(shí)任務(wù)@Scheduler的使用及解讀
這篇文章主要介紹了SpringBoot最簡(jiǎn)單的定時(shí)任務(wù)@Scheduler的使用及解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
C語(yǔ)言中下標(biāo)與指針的轉(zhuǎn)換以及指向指針的指針的例子
這篇文章主要介紹了C語(yǔ)言中下標(biāo)與指針的轉(zhuǎn)換以及指向指針的指針的示例,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11
java 自己實(shí)現(xiàn)DataSource實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了java 自己實(shí)現(xiàn)DataSource實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05

