是否可以使用
Android绑定功能将setOnPageChangeListener的处理程序绑定到XML文件中的ViewPager?
演示显示onClick事件,但我很好奇我可以用它实现多少事件功能.关于数据绑定功能的任何链接也都很棒.谢谢.
假设的例子:
example_activity.xml
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="handlers" type="com.example.Handlers"/> </data> <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" android:onPageChangeListener="@{handlers.pageChanged}" /> </layout>
Handler.java
package com.example.viewmodels; import android.view.View; public class Handlers { public void pageChanged(View view){} }
编译错误是:
解决方法
有可能这样做.您需要实现自定义绑定适配器,因为没有为Android支持库中的View类预定义BindingAdapter类.
代码应该如下所示,我没有彻底测试它们:
<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代码:
@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.