Перемещает ли привязка данных логику пользовательского интерфейса из макетов? - PullRequest
0 голосов
/ 05 октября 2018

Я очень плохо знаком с привязкой данных и только начинаю смотреть на библиотеку привязки данных Android, и одна вещь в документации вызывает у меня проблемы.

Использование компонентов ViewModel с библиотекой привязки данных позволяет перемещать логику пользовательского интерфейса из макетов в компоненты, которые легче тестировать.

Сразу после этого, вот что - в XML макета:

<CheckBox
    android:id="@+id/rememberMeCheckBox"
    android:checked="@{viewmodel.rememberMe}"
    android:onCheckedChanged="@{() -> viewmodel.rememberMeChanged()}" />

Может быть, это только я, но разве это свойство onCheckedChanged не содержит гораздо больше "логики" в макете , чемстаромодный способ вызова setOnCheckedChangeListener() на «тупом» макете из действия или фрагмента?Все это кажется немного противоречивым.Может кто-нибудь объяснить мне, как привязка данных перемещает "Логика пользовательского интерфейса из макетов" ?

1 Ответ

0 голосов
/ 05 октября 2018

Ваш ViewModel теперь содержит логику, которую вы можете проверить независимо от пользовательского интерфейса, а пользовательский интерфейс можно протестировать с помощью имитированных ViewModel с.Это не всегда меньше кода, это более структурированный код, следующий за шаблоном.

...