<Button
android:id="@+id/onboard_next_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="@string/next"
android:onClick="@{vm::onButtonNext}"
android:background="@color/customColor"
android:layout_alignParentBottom="true"/>
我正在按钮上实现一个viewpager页面更改逻辑。如果它是标准的MVC,这是非常容易的。我所要做的就是写一些像
这样的东西 @Override
public void onButtonNext(View view) {
// viewPager does not exist in my onButtonNext function because this is the viewModel
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
}
因为viewPager实例存在于我的片段或活动中。
但是,因为我在MVVM中实现它,所以我无法访问viewPager。如果我没有访问viewPager实例的权限,如何在viewModel中实现viewPager.setCurrentItem?
答案 0 :(得分:1)
但是,因为我在MVVM中实现它,所以我无权访问 viewPager。如何在我的实现中实现viewPager.setCurrentItem viewModel如果我没有访问viewPager实例的权限?
您需要使用@BindingAdapter注释的public static void
方法。
E.g。
@BindingAdapter("currentItem")
public static void setCurrentItem(ViewPager viewPager, int item) {
}
在布局中将使用类似app:currentItem
的内容。当然,您的VM必须提供int
属性或项目的getter。 Android负责其余部分。您可以详细了解BindingAdapter
here