Преимущества привязки данных в kotlin? - PullRequest
2 голосов
/ 11 мая 2019

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

Ответы [ 2 ]

2 голосов
/ 11 мая 2019

Я нашел ответ здесь :

Эй! Разработчик Advocate для Android на Google здесь!

Я хотел бы добавить немного фона здесь. Расширения Kotlin с синтетическими представлениями никогда не были намеренно «рекомендованы», хотя это не следует воспринимать как рекомендацию не использовать их. Если они работают на вас, пожалуйста, продолжайте использовать их в своем приложении!

Мы отошли от них (например, мы не учим их в курсе Udacity), потому что они предоставляют глобальное пространство имен идентификаторов, которое не связано с макетом, которое фактически раздуто без проверок на недопустимые поиски, только для Kotlin и не выставляйте обнуляемость, когда представления присутствуют только в некоторой конфигурации. Все вместе эти проблемы приводят к увеличению количества сбоев API для приложений Android.

С другой стороны, они предлагают облегченный API, который может помочь упростить поиск в представлении. В этом пространстве также стоит взглянуть на привязку данных, которая также выполняет автоматический просмотр представлений, а также интегрируется с LiveData для автоматического обновления ваших представлений при изменении данных.

Сегодня в этом пространстве работает несколько опций:

  • Привязка данных - это рекомендация для просмотра представления, а также для привязки, но она добавляет некоторые накладные расходы по сравнению с Android Kotlin Extensions. Стоит посмотреть, подходит ли это для вашего приложения. Привязка данных также позволяет вам наблюдать LiveData, чтобы автоматически связывать представления при изменении данных. По сравнению с Kotlin Extensions он добавляет проверку времени компиляции поиска и безопасности типов.
  • Android Kotlin Extensions официально не рекомендуется (что не совпадает с рекомендацией против). Это связано с вышеупомянутыми проблемами, поэтому для нашего кода мы их не используем.
  • Butter Knife - еще одно чрезвычайно популярное решение, которое работает как для Kotlin, так и для языка программирования Java.

Прочитав комментарии здесь, есть много разработчиков, которым очень повезло с Kotlin Extensions. Это здорово - и о чем мы будем помнить, когда будем искать пути дальнейшего улучшения наших API. Если вы еще не ознакомились с привязкой данных, обязательно попробуйте.

Кроме того, наше внутреннее руководство по стилю кода не предназначено для непосредственного применения вне нашей кодовой базы. Например, мы используем mPrefixVariables, но нет причин, по которым каждое приложение должно следовать этому стилю.

1 голос
/ 11 мая 2019

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

Итак, возвращаясь к dataBinding , он точно устанавливает значения для представлений напрямую / получает триггер события (двухстороннее связывание) внутри xml вместо того, чтобы делать это явно в классе действия / фрагмента.

в чем преимущество: Предположим, у вас есть 20 Textview внутри макета XML, вы хотите установить значения для этих текстовых представлений из объекта ответа (с 20 соответствующими полями).

1) Без привязки к данным вам нужно получить доступ к каждому представлению и установить значение из объекта (таким образом, 20 строк кода).

2) При связывании данных вы просто привязываете объект к xml (один вкладыш), и ваш Xml будет заполнять соответствующие поля, используя код привязки внутри xml.

...