viewMager页面更改为Android MVVM

时间:2017-09-19 10:16:44

标签: android android-fragments mvvm android-viewpager

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

1 个答案:

答案 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