Внесение некоторых изменений в вашу привязку не означает, что она будет немедленно влиять на вашу View
. Изменение вещей в привязке означает, что вы действительно планируете эти изменения, которые будут применены в ближайшем будущем. Это по многим причинам, производительность является одной из них.
Представьте, что в ваших xmls есть сложные выражения. Вы не хотите выяснять все, что связано с переменными привязки, прежде чем устанавливать их все. Это было бы пустой тратой ресурсов.
Вы можете узнать больше об этом в самом сгенерированном связывающем классе Java. Я предлагаю вам прочитать это.
Вызов executePendingBindings
означает, что вы по сути заставляете фреймворк делать все, что ему нужно сделать до сих пор в привязке, прямо в момент ее вызова.
Вы не должны делать это в своем адаптере, если ваш случай не требует этого. Некоторые люди делают это, чтобы быть уверенным, что все правильно настроено на элементе, прежде чем двигаться дальше. Так, например нет такого случая, как onBind
, вызываемый снова до того, как был выполнен предыдущий раунд привязок ... или что-то подобное ...
РЕДАКТИРОВАТЬ 1:
Также ... не забывайте, что планирование выполнения изменений (на ближайшее будущее) - это то, что позволяет вам setVariables
на binding
из потоков, отличных от потока UI
. Потому что установка переменной не касается самого View
.
РЕДАКТИРОВАТЬ 2:
Самый простой способ взглянуть на сгенерированные классы Java - это:
- Навигация -> Файл
![navigate-file](https://i.stack.imgur.com/RQy4S.png)
- Введите имя файла привязки в UpperCamelCase, а затем
Binding
(например, если ваш макет activity_main
, введите ActivityMainBinding
)
![activity_main_binding](https://i.stack.imgur.com/kFcup.png)