溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android在自定義類中實(shí)現(xiàn)自定義監(jiān)聽(tīng)器方式

發(fā)布時(shí)間:2020-08-31 06:19:39 來(lái)源:腳本之家 閱讀:619 作者:Simon_Qi 欄目:移動(dòng)開(kāi)發(fā)

監(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è)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI