Я учусь, как разрабатывать, используя MVVM. Я создал небольшой пример, как показано ниже в коде.
У меня вопрос, я создал слой View и класс VM, и мне удалось уведомить BindingAdapter в Activity об объекте, который переносит данные, здесь я имею в виду объект, который помечен
@ Bindable
То, что я собираюсь сделать, это иметь ссылку на один из компонентов пользовательского интерфейса, включенный в файл макета. Я ссылался на некоторые ссылки и обнаружил, что они используют метод findBinding ().
Этот метод принимает параметр типа View. В одном из руководств говорится, что View, который должен быть передан findBinding (), может быть любым представлением !! Для меня это неясно, потому что я даже не знаю, как
есть ссылка на мою компоновку привязки, которая является слоем просмотра.
Для первой строки
ViewDataBinding bindingInTheViewLayer = DataBindingUtil.findBinding(activityMainBinding);
Я получил следующую ошибку:
error: method findBinding in class DataBindingUtil cannot be applied to given types;
required: View
found: ActivityMainBinding
reason: cannot infer type-variable(s) T
(argument mismatch; ActivityMainBinding cannot be converted to View)
where T is a type-variable:
T extends ViewDataBinding declared in method <T>findBinding(View)
Для второй строки
ViewDataBinding bindingInTheRegularView = DataBindingUtil.findBinding(new View(this));
Я получил
Log.e("MainActivity", "bindingInTheRegularView is NULL");
Пожалуйста, дайте мне знать, как сделать ссылку на макет привязки или на один из компонентов пользовательского интерфейса.
код
ViewDataBinding bindingInTheViewLayer = DataBindingUtil.findBinding(activityMainBinding);
ViewDataBinding bindingInTheRegularView = DataBindingUtil.findBinding(new View(this));
/*if (bindingInTheViewLayer != null) {
Log.i("MainActivity", "bindingInTheViewLayer: " + bindingInTheViewLayer);
} else {
Log.e("MainActivity", "bindingInTheViewLayer bindingInTheViewLayer is NULL");
}*/
if (bindingInTheRegularView != null) {
Log.i("MainActivity", "bindingInTheRegularView: " + bindingInTheRegularView);
} else {
Log.e("MainActivity", "bindingInTheRegularView is NULL");
}