本系列目錄
- 使用Data Binding(一)介紹
- 使用Data Binding(二)整合與配置
- 使用Data Binding(三)在Activity中的使用
- 使用Data Binding(四)在Fragment中的使用
- 使用Data Binding(五)資料繫結
- 使用Data Binding(六)RecyclerView Adapter中的使用
- 使用Data Binding(七)使用BindingAdapter簡化圖片載入
- 使用Data Binding(八)使用自定義Interface
- 使用Data Binding Android Studio不能正常生成相關類/方法的解決辦法
為什麼要使用自定義Interface
-
我們平常在Android的開發中,比如如果要設定一個View的點選事件,通常通過view.setOnClickListener()來實現的,這種方式略顯繁瑣,而且要通過findViewById()來獲取到此View的引用。使用了Data Binding技術以後,我們無需這樣做,可以直接通過在xml佈局檔案中設定一個Interface的實現來直接呼叫某個方法,非常方便。
-
除了上面說的方便之外,當兩個Fragment之間需要通訊時,Android是強烈不建議兩個Fragment之間直接通訊的,它們之間的通訊只能通過他們所在的Activity來進行中轉。使用Data Binding之後,這種情況處理起來就簡單了很多,通過將一個Interface的實現設定到兩個Fragment的xml佈局檔案中就可以實現。
下面我們來舉例說明這種方式的用法。
使用自定義介面
- 首先定義一個介面
public interface IMainActivity {
void clickedSomething();
}
複製程式碼
- 實現這個介面
public class MainActivity extends AppCompatActivity implements IMainActivity{
@Override
public void clickedSomething() {
}
}
複製程式碼
- 在佈局檔案的標籤中定義該介面的變數
<variable
name="iMainActivity"
type="cn.examplecode.androiddatabinding.IMainActivity"/>
複製程式碼
- 通過binding設定這個變數
mBinding.setIMainActivity(this);
複製程式碼
如果發現並沒有這個方法,可能因為IDE並沒有自動生成這個方法,可以參考這篇文章進行解決。
- 佈局中呼叫介面的方法
<TextView
android:id="@+id/tv_example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{()->iMainActivity.clickedSomething()}"
android:textSize="16sp" />
複製程式碼
注意:android:onClick()中的寫法是一種lambda式的寫法
總結
通過簡單的幾步就可以在佈局中直接呼叫Activity(或任意物件)中的方法了,本文以簡單的點選事件及簡單的事件進行用法的舉例,大家可以根據自己的業務應用到更多的場景中。
如有更多疑問,請參考我的其它Android相關部落格:我的部落格地址