gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:22 25 4
gpt4 key购买 nike

是否可以使用 Android 绑定(bind)功能将 setOnPageChangeListener 的处理程序绑定(bind)到 XML 文件中的 ViewPager?

演示显示了 onClick 事件,但我很好奇我可以用它实现多少事件功能。数据绑定(bind)功能的任何链接也很好。谢谢。

假设的例子:

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”的资源标识符

最佳答案

这是可以做到的。您需要实现自定义绑定(bind)适配器,因为没有为 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

关于ViewPager 的 Android 事件监听器数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37606268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com