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

前端之家收集整理的这篇文章主要介绍了ViewPager的Android事件监听器数据绑定前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以使用 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){}
}

编译错误是:

错误:(62)在’android’包中找不到属性’onPageChangeListener’的资源标识符

解决方法

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

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

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

<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.

猜你在找的Android相关文章