且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ViewPager 的 Android 事件侦听器数据绑定

更新时间:2023-01-15 15:28:13

这是可以做到的.您需要实现自定义绑定适配器,因为 Android 支持库中没有为 View 类预定义的 BindingAdapter 类.

It is possible to do this. You need to implement a custom binding adapter because there is no BindingAdapter classes predefined for View classes from Android support libraries.

关于如何实现自定义适配器,您可以阅读 this.

For how to implement the custom adapter you may read this.

代码应该如下所示,我还没有彻底测试过:

The code should be something like the below, I haven't tested them thoroughly:

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:onPageChangeListener="@{handlers}" />

您的 BindingAapter 代码:

Your BindingAapter code:

@BindingAdapter("onPageChangeListener")
public static void setOnPageChangeListener(ViewPager viewPager, ViewPager.OnPageChangeListener listener) {
    Log.i("setOnPageChangeListener");

    // clear listeners first avoid adding duplicate listener upon calling notify update related code
    viewPager.clearOnPageChangeListeners();
    viewPager.addOnPageChangeListener(listener);
}

附:您传递的处理程序类应该实现 ViewPager.OnPageChangeListener.

P.S. Your handler class being passed should implement ViewPager.OnPageChangeListener.