Можете ли вы использовать BindingAdapter на ViewStub? - PullRequest
1 голос
/ 26 июня 2019

Я хочу создать 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);

Похоже, он пытается применить привязку к раздутому представлению, но я здесь не этого хочу.

...