Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽(tīng)器方式
監(jiān)聽(tīng)器可以說(shuō)是Android開(kāi)發(fā)中最常用的東西之一。我們通過(guò)監(jiān)聽(tīng)器可以監(jiān)聽(tīng)對(duì)象的各種變化事件,并進(jìn)行一些需要的處理,相當(dāng)有用,而且使用起來(lái)也很簡(jiǎn)單。其實(shí),監(jiān)聽(tīng)器就相當(dāng)于C++中的回調(diào)函數(shù),達(dá)到條件就回調(diào)執(zhí)行。
很多時(shí)候,我們?cè)谧远x控件類中也需要實(shí)現(xiàn)一些屬性變化的監(jiān)聽(tīng)器,實(shí)現(xiàn)跟原生控件監(jiān)聽(tīng)器一樣的功能。以下分幾個(gè)步驟說(shuō)明自定義監(jiān)聽(tīng)器實(shí)現(xiàn)和使用(以自定義類MyClass加載完成監(jiān)聽(tīng)器為例):
一、自定義監(jiān)聽(tīng)器的實(shí)現(xiàn):
1、 定義一個(gè)加載完成監(jiān)聽(tīng)接口
//加載監(jiān)聽(tīng)接口
public static interface LoadingListener {
public void onFinishedLoading(boolean success);
}
在MyClass自定義類中定義一個(gè)加載完成監(jiān)聽(tīng)接口LoadingListener,接口中聲明一個(gè)方法onFinishedLoading給使用該接口的類實(shí)現(xiàn)具體過(guò)程,success表示是否加載成功.
2、 聲明接口并實(shí)現(xiàn)一個(gè)設(shè)置監(jiān)聽(tīng)器的方法
聲明LoadingListener接口
private LoadingListener mLoadingListener;
提供設(shè)置LoadingListener方法
public void setLoadingListener(LoadingListener listener) {
mLoadingListener = listener;
}
3、 對(duì)應(yīng)的情況下調(diào)用該接口的方法
在MyClass加載完成的時(shí)候則調(diào)用監(jiān)聽(tīng)接口的方法
mLoadingListener.onFinishedLoading(true);
二、自定義監(jiān)聽(tīng)器的使用:
1、給MyClass的實(shí)例實(shí)現(xiàn)監(jiān)聽(tīng)接口中方法
mMyClass.setLoadingListener(new MyClass.LoadingListener() {
@Override
public void onFinishedLoading(boolean success) {
//執(zhí)行必要的處理
}
}
在onFinishedLoading函數(shù)中實(shí)現(xiàn)自定義的邏輯則可。
補(bǔ)充知識(shí):android Activity 給 Fragment 設(shè)置回調(diào)的方法
這個(gè)實(shí)現(xiàn)方法很簡(jiǎn)單,可分為3步走:
1.在fragment中定義接口
2.在activity的定義時(shí)實(shí)現(xiàn)這個(gè)接口
3. 在fragment中的 onAttach 方法中 將 Context 轉(zhuǎn)為 相應(yīng)的接口;
代碼如下:
public class AllFragment extends Fragment {
//......代碼省略
@Override
public void onAttach(Context context) {
super.onAttach(context);
mOnChangeTabListener = (OnChangeTabListener) context;
}
public interface OnChangeTabListener{
void onChangeTab(String tag);
}
}
在activity的定義時(shí)實(shí)現(xiàn)該接口,如下:
public class SearchActivity extends AppCompactActivity implements AllFragment.OnChangeTabListener {
//代碼省略
@Override
public void onChangeTab(String tag) {
if ("應(yīng)用".equals(tag)){
mViewPager.setCurrentItem(1);
}else {
mViewPager.setCurrentItem(2);
}
}
}
以上這篇Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽(tīng)器方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Android中手勢(shì)交互的實(shí)現(xiàn)方法
本篇文章是對(duì)Android中手勢(shì)交互的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05
Android調(diào)用系統(tǒng)自帶瀏覽器打開(kāi)網(wǎng)頁(yè)的實(shí)現(xiàn)方法
在Android中可以調(diào)用自帶的瀏覽器,或者指定一個(gè)瀏覽器來(lái)打開(kāi)一個(gè)鏈接。只需要傳入一個(gè)uri,可以是鏈接地址。接下來(lái)通過(guò)本文給大家分享android 自帶瀏覽器打開(kāi)網(wǎng)頁(yè)的實(shí)現(xiàn)方法,需要的朋友參考下吧2017-09-09
Android自定義view實(shí)現(xiàn)圓環(huán)進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)圓環(huán)進(jìn)度條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
android長(zhǎng)截屏原理及實(shí)現(xiàn)代碼
本篇文章主要介紹了android長(zhǎng)截屏原理及實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Android手機(jī)端小米推送Demo解析和實(shí)現(xiàn)方法
本篇文章主要是介紹了Android端小米推送Demo解析和實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
詳解Android 7.0 Settings 加載選項(xiàng)
本篇文章主要介紹了Android 7.0 Settings 加載選項(xiàng),Android 7.0 Settings頂部多了一個(gè)建議選項(xiàng),多了個(gè)側(cè)邊欄,操作更加便捷了,有興趣的可以了解一下。2017-02-02
Android實(shí)現(xiàn)Window彈窗效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)Window彈窗效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Android通知欄增加快捷開(kāi)關(guān)的功能實(shí)現(xiàn)教程
對(duì)于Android來(lái)說(shuō)其中一項(xiàng)很方便的操作便是下拉菜單,下拉菜單欄可以快捷打開(kāi)某項(xiàng)設(shè)置,這篇文章主要給大家介紹了關(guān)于Android通知欄增加快捷開(kāi)關(guān)的功能實(shí)現(xiàn),需要的朋友可以參考下2023-01-01

