1. 程式人生 > 程式設計 >Android在自定義類中實現自定義監聽器方式

Android在自定義類中實現自定義監聽器方式

監聽器可以說是Android開發中最常用的東西之一。我們通過監聽器可以監聽物件的各種變化事件,並進行一些需要的處理,相當有用,而且使用起來也很簡單。其實,監聽器就相當於C++中的回撥函式,達到條件就回調執行。

很多時候,我們在自定義控制元件類中也需要實現一些屬性變化的監聽器,實現跟原生控制元件監聽器一樣的功能。以下分幾個步驟說明自定義監聽器實現和使用(以自定義類MyClass載入完成監聽器為例):

一、自定義監聽器的實現:

1、 定義一個載入完成監聽介面

//載入監聽介面
public static interface LoadingListener {
 public void onFinishedLoading(boolean success);
}

在MyClass自定義類中定義一個載入完成監聽介面LoadingListener,介面中宣告一個方法onFinishedLoading給使用該介面的類實現具體過程,success表示是否載入成功.

2、 宣告介面並實現一個設定監聽器的方法

宣告LoadingListener介面

private LoadingListener mLoadingListener;

提供設定LoadingListener方法

public void setLoadingListener(LoadingListener listener) {
 mLoadingListener = listener;
}

3、 對應的情況下呼叫該介面的方法

在MyClass載入完成的時候則呼叫監聽介面的方法

mLoadingListener.onFinishedLoading(true);

二、自定義監聽器的使用:

1、給MyClass的例項實現監聽介面中方法

mMyClass.setLoadingListener(new MyClass.LoadingListener() {
   @Override
   public void onFinishedLoading(boolean success) {
   //執行必要的處理
  }
}

在onFinishedLoading函式中實現自定義的邏輯則可。

補充知識:android Activity 給 Fragment 設定回撥的方法

這個實現方法很簡單,可分為3步走:

1.在fragment中定義介面

2.在activity的定義時實現這個介面

3. 在fragment中的 onAttach 方法中 將 Context 轉為 相應的介面;

程式碼如下:

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的定義時實現該介面,如下:

public class SearchActivity extends AppCompactActivity implements AllFragment.OnChangeTabListener {

 //程式碼省略
 @Override
 public void onChangeTab(String tag) {
  if ("應用".equals(tag)){
   mViewPager.setCurrentItem(1);
  }else {
   mViewPager.setCurrentItem(2);
  }
 }
}

以上這篇Android在自定義類中實現自定義監聽器方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。