是否可以使用
Android绑定功能将setOnPageChangeListener的处理程序绑定到XML文件中的ViewPager?
演示显示onClick事件,但我很好奇我可以用它实现多少事件功能.关于数据绑定功能的任何链接也都很棒.谢谢.@H_301_3@
假设的例子:@H_301_3@
example_activity.xml@H_301_3@
<?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@H_301_3@
package com.example.viewmodels; import android.view.View; public class Handlers { public void pageChanged(View view){} }
错误:(62)在’android’包中找不到属性’onPageChangeListener’的资源标识符@H_301_3@
解决方法
有可能这样做.您需要实现自定义绑定适配器,因为没有为Android支持库中的View类预定义BindingAdapter类.
有关如何实现自定义适配器的信息,请阅读this.@H_301_3@
<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}" />
@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.@H_301_3@