且构网

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

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

更新时间:2023-01-14 09:51:32

可以这样做.您需要实现自定义绑定适配器,因为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.

有关如何实现自定义适配器的信息,请阅读.

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);
}

P.S.您传递的处理程序类应实现ViewPager.OnPageChangeListener.

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