2017-09-19 81 views
-1
<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,這是非常容易的。所有我需要做的就是因爲viewPager比如在我的片段或活動的存在是爲了寫類似viewPager頁面更改爲android MVVM

@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); 
} 

但是,因爲我在MVVM中實現了這個功能,所以我無法訪問viewPager。如果我無法訪問viewPager實例,如何在viewModel中實現viewPager.setCurrentItem?

+0

那麼您可以訪問使用您的佈局名稱databing像MyLayoutBinding.viewpager –

回答

1

但是,因爲我在MVVM中實現了這個功能,所以我無法訪問 viewPager。如果我無法訪問viewPager實例,如何在我的 viewModel中實現viewPager.setCurrentItem?

您需要一個用@BindingAdapter註解的public static void方法。

例如

@BindingAdapter("currentItem") 
    public static void setCurrentItem(ViewPager viewPager, int item) { 
    } 

並在佈局中將使用類似app:currentItem。當然你的虛擬機必須提供物品的int屬性或者吸氣劑。 Android負責其餘部分。你可以閱讀更多關於BindingAdapterhere

+0

比如我應該在哪裏定義這個'@ BindingAdapter'方法是定義一些ID您ViewPager? –

+0

這是一個靜態方法。這並不重要。在過去,我有我的'CustomBinding'實用類,在那裏我把所有'@ BindingAdapter'方法。你可以做同樣的 – Blackbelt

+0

我得到關於第二個參數 - 'int item'的部分。 但是這個'@BindingAdapter(「currentItem」)'附加到xml中的'Button'視圖對象,而不是xml中的'ViewPager'對象。 所以我們'currentItem'綁定適配器仍然無法訪問我看到的'ViewPager'對象 –

相關問題