#java #android #android-viewbinding
Вопрос:
Я просто работаю над своим первым тестовым приложением с привязкой к просмотру.
Примеры в документах Android указывают, что если у меня есть представление с идентификатором «txt_name», представление будет доступно из созданного класса как
binding.getTxtName()
Тем не менее, похоже, что участники являются общедоступными и доступны таким образом
binding.txtName
Это прекрасно, но просто не мой предпочтительный стиль кодирования.
Есть ли способ изменить поведение, чтобы получатели создавались структурой привязки представлений?
Комментарии:
1. Вы уверены, что не используете привязку данных? Насколько мне известно, привязка представления генерирует геттеры, в то время как привязка данных просто генерирует поля.
2. @HenryTwist При использовании я не получаю никаких геттеров для представлений в своих классах привязки
viewBinding
. Тем не менее, все эти поля естьfinal
, поэтому я могу себе представить, что Google не видел смысла добавлять для них геттеры.3. Это странно, потому что в документации конкретно упоминаются геттеры, например, здесь: developer.android.com/topic/libraries/view-binding#activities . На самом деле я некоторое время не использовал привязку представления, мне придется дважды проверить, смогу ли я ее воспроизвести.
4. Да,
getRoot
существует, если ты об этом. Это потому, что он переопределяет метод вViewBinding
интерфейсе. Я предполагаюbinding.getName()
, что это может быть ошибка копирования-вставки, но я не могу сказать наверняка.5. Да, я имел в виду, где там написано
binding.getName().setText(viewModel.getName());
. Однако я только что протестировал его, и он генерирует только поля, так что, вероятно, это просто опечатка. Действительно, кажется странным, что они не будут следовать соглашениям Java.