Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽器方式
監(jiān)聽器可以說是Android開發(fā)中最常用的東西之一。我們通過監(jiān)聽器可以監(jiān)聽對象的各種變化事件,并進(jìn)行一些需要的處理,相當(dāng)有用,而且使用起來也很簡單。其實(shí),監(jiān)聽器就相當(dāng)于C++中的回調(diào)函數(shù),達(dá)到條件就回調(diào)執(zhí)行。
很多時(shí)候,我們在自定義控件類中也需要實(shí)現(xiàn)一些屬性變化的監(jiān)聽器,實(shí)現(xiàn)跟原生控件監(jiān)聽器一樣的功能。以下分幾個(gè)步驟說明自定義監(jiān)聽器實(shí)現(xiàn)和使用(以自定義類MyClass加載完成監(jiān)聽器為例):
一、自定義監(jiān)聽器的實(shí)現(xiàn):
1、 定義一個(gè)加載完成監(jiān)聽接口
//加載監(jiān)聽接口 public static interface LoadingListener { public void onFinishedLoading(boolean success); }
在MyClass自定義類中定義一個(gè)加載完成監(jiān)聽接口LoadingListener,接口中聲明一個(gè)方法onFinishedLoading給使用該接口的類實(shí)現(xiàn)具體過程,success表示是否加載成功.
2、 聲明接口并實(shí)現(xiàn)一個(gè)設(shè)置監(jiān)聽器的方法
聲明LoadingListener接口
private LoadingListener mLoadingListener;
提供設(shè)置LoadingListener方法
public void setLoadingListener(LoadingListener listener) { mLoadingListener = listener; }
3、 對應(yīng)的情況下調(diào)用該接口的方法
在MyClass加載完成的時(shí)候則調(diào)用監(jiān)聽接口的方法
mLoadingListener.onFinishedLoading(true);
二、自定義監(jiān)聽器的使用:
1、給MyClass的實(shí)例實(shí)現(xiàn)監(jiān)聽接口中方法
mMyClass.setLoadingListener(new MyClass.LoadingListener() { @Override public void onFinishedLoading(boolean success) { //執(zhí)行必要的處理 } }
在onFinishedLoading函數(shù)中實(shí)現(xiàn)自定義的邏輯則可。
補(bǔ)充知識:android Activity 給 Fragment 設(shè)置回調(diào)的方法
這個(gè)實(shí)現(xià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)聽器方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android RecyclerView多類型布局卡片解決方案
這篇文章主要介紹了Android RecyclerView多類型布局卡片解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03Android Handler實(shí)現(xiàn)閃屏頁倒計(jì)時(shí)代碼
這篇文章主要介紹了Android Handler實(shí)現(xiàn)閃屏頁倒計(jì)時(shí)代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08android換膚功能 如何動(dòng)態(tài)獲取控件中背景圖片的資源id?
這篇文章主要為大家詳細(xì)介紹了android換膚功能中如何動(dòng)態(tài)獲取控件中背景圖片的資源id? ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08比較完整的android MP3 LRC歌詞滾動(dòng)高亮顯示(附源碼)
比較完整的android MP3 LRC歌詞滾動(dòng)高亮顯示(附源碼)。需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11Android中使用TextView實(shí)現(xiàn)文字跑馬燈效果
本文主要介紹了Android中使用TextView實(shí)現(xiàn)文字走馬燈效果的方法解析。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04Android 如何攔截用戶頻繁操作(點(diǎn)擊事件)
本文主要介紹了Android 如何攔截用戶頻繁操作,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08使用Flutter開發(fā)一個(gè)圖片UI組件的代碼示例
在移動(dòng)應(yīng)用開發(fā)中,圖片展示是一個(gè)常見的需求,為了滿足不同場景的圖片展示需求,我們可以開發(fā)一個(gè)靈活配置的圖片UI組件,本文將介紹如何使用Flutter開發(fā)一個(gè)圖片UI組件,并提供了豐富的配置選項(xiàng),需要的朋友可以參考下2023-09-09Android 使用地圖時(shí)的權(quán)限請求方法
今天小編就為大家分享一篇Android 使用地圖時(shí)的權(quán)限請求方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Android雙向選擇控件DoubleSeekBar使用詳解
這篇文章主要為大家詳細(xì)介紹了Android雙向選擇控件DoubleSeekBar的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08Android超詳細(xì)講解組件AdapterView的使用
AdapterView組件是一組重要的組件,AdapterView本身是一個(gè)抽象基類,它派生的子類在用法上十分相似,從AdapterView派生出的三個(gè)子類:AdsListView、AdsSpinner、AdapterViewAnimator,這3個(gè)子類依然是抽象的,實(shí)際運(yùn)用時(shí)需要它們的子類2022-03-03