Я хочу создать BindingAdapter "inflateWhen" и прикрепить его к заготовке представления, чтобы он раздувался, когда логическое значение истинно. Однако BindingAdapter продолжает пытаться работать с корневым представлением заглушки представления, что приводит к сбою его компиляции. Есть ли способ сделать это как адаптер привязки, а не делать это программно в действии?
Вот что у меня есть до сих пор:
@BindingAdapter("inflateWhen")
fun inflateWhen(viewstub: ViewStub, inflate: Boolean) {
if (inflate) {
viewstub.inflate()
} else {
viewstub.visibility = View.GONE
}
}
Это то, что у меня есть, но при подключении к viewstub, например
<ViewStub
android:id="@+id/activity_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:inflateWhen="@{viewmodel.userid != 0}" />
он не компилируется. Ошибка:
ActivityMyAccountSectionedBindingImpl.java:1087: error: cannot find symbol
if (this.pageFooter.isInflated()) this.pageFooter.getBinding().setVariable(BR.inflateWhen, viewmodelRatingInt0);
Похоже, он пытается применить привязку к расширенному представлению, но это не то, что мне нужно.