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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...