Я пробовал обучающие программы на Inte rnet, чтобы добавить адаптер на androidx.viewpager.widget.ViewPager
, чтобы получить двустороннюю привязку данных на текущей вкладке. Я прибыл к этому адаптеру
// adapter file
@BindingAdapter("currentTab")
@JvmStatic
fun setTab(pager: ViewPager, itemLiveData: MutableLiveData<Int>) {
itemLiveData.value?.let {
if (pager.currentItem != it) {
pager.setCurrentItem(it, true)
}
}
}
@InverseBindingAdapter(attribute = "currentItem")
@JvmStatic
fun getTab(pager: ViewPager) = pager.currentItem
<!-- layout file -->
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="70dp"
app:adapter="@{viewModel.adapter}"
app:currentTab="@={viewModel.currentItem}"
app:layout_constraintBottom_toTopOf="@+id/tabLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
Когда я пытаюсь собрать приложение, я получаю эту ошибку (с опцией --stacktrace
):
Could not find event 'currentItemAttrChanged' on View type 'androidx.viewpager.widget.ViewPager'
Я не могу найти учебники / ответы, поэтому я спрашиваю, есть ли у кого-нибудь ответ на этот вопрос. Спасибо
РЕДАКТИРОВАТЬ: Я пытался с @InverseBindingAdapter(attribute = "currentTab")
, но это дает мне такую же ошибку: Could not find event 'currentTabAttrChanged' on View type 'androidx.viewpager.widget.ViewPager'
.
Проблема в том, что я не знаю имя события вызывается при изменении currentTab
.