Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽器方式
監(jiān)聽器可以說是Android開發(fā)中最常用的東西之一。我們通過監(jiān)聽器可以監(jiān)聽對(duì)象的各種變化事件,并進(jìn)行一些需要的處理,相當(dāng)有用,而且使用起來也很簡(jiǎn)單。其實(shí),監(jiān)聽器就相當(dāng)于C++中的回調(diào)函數(shù),達(dá)到條件就回調(diào)執(zhí)行。
很多時(shí)候,我們?cè)谧远x控件類中也需要實(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、 對(duì)應(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ǔ)充知識(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)聽器方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. HTML <!DOCTYPE> 標(biāo)簽2. 使用EF Code First搭建簡(jiǎn)易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫(kù)遷移3. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案4. HTML5 Canvas繪制圖形從入門到精通5. Django中如何使用Channels功能6. php對(duì)gb編碼動(dòng)態(tài)轉(zhuǎn)utf-8編碼的幾種方法評(píng)測(cè)7. Vue ElementUI實(shí)現(xiàn):限制輸入框只能輸入正整數(shù)的問題8. 基于JavaScript實(shí)現(xiàn)大文件上傳后端代碼實(shí)例9. .NET Core中使用gRPC的方法10. 基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例
