Я пытаюсь связать visibility
из Cardview
с условием на основе boolean
из модели представления, используя databinding
.
Но я получаю ошибку привязки данных
Я пытался использовать привязку данных и обрабатывать visibility
внутри самого xml
.
Я также пытался обработать visibility
программно из фрагмента.
Но оба примера терпят неудачу
<variable name="vm"
type="packageName.ui.viewmodels.DashHomeViewModel"/>
android:visibility="@{vm.showQRCard == true ? View.VISIBLE : View.GONE}"
val binder = DataBindingUtil
.inflate(inflater, R.layout.fragment_dash_home, container, false)
binder.vm = viewModel
Я получаю это сообщение об ошибке.
ошибка: конструктор FragmentDashHomeBinding в классе FragmentDashHomeBinding не может быть применен к заданным типам;
супер (bindingComponent, root, 2
^
Обязательно: объект, представление, int, AppBarLayout, LinearLayout, LinearLayout, ImageView, SwipeRefreshLayout, панель инструментов, CircleImageView, TextView, TextView, TextView, FrameLayout, FrameLayout, FrameLayout, FrameLayout
найдено: DataBindingComponent, View, int, AppBarLayout, LinearLayout, LinearLayout, ImageView, ImageView, SwipeRefreshLayout, панель инструментов, CircleImageView, TextView, TextView, TextView, TextView, FrameLayout, FrameLayout, FrameLayout, FrameLayout
причина: фактические и формальные списки аргументов различаются по длине
Из этой ошибки я понимаю, что ожидается Object
, но DataBindingComponent
передается, но DataBindingComponent
автоматически преобразуется в object
, чего в данном случае не происходит.
Я не знаю причину этого.
Это происходит в данном конкретном случае только потому, что аналогичный код в других фрагментах для наглядности работает отлично.