Я хочу создать BindingAdapter "inflateWhen" и прикрепить его к viewstub, чтобы он раздувался, когда логическое значение равно true. Однако BindingAdapter продолжает пытаться работать с корневым представлением viewstub, в результате чего он не может скомпилироваться. Есть ли способ сделать это как обязательный адаптер, вместо того, чтобы делать это программно в упражнении?
Вот что у меня есть:
@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);
Похоже, он пытается применить привязку к раздутому представлению, но я здесь не этого хочу.