Зачем использовать ViewBinding поверх DataBinding? - PullRequest
1 голос
/ 04 ноября 2019

Как мы можем прочитать здесь существует очень небольшая разница между ViewBinding и Databinding.

  • Библиотека привязки данных обрабатывает только данныемакеты привязки, созданные с использованием тега <layout>.

  • Привязка представления не поддерживает переменные макета или выражения макета, поэтому ее нельзя использовать для привязки макетов к данным в XML.

Есть ли какие-либо другие отличия, о которых следует знать разработчикам? Зачем создавать что-то новое с такой маленькой разницей?

Кто-нибудь, пожалуйста, объясните

Ответы [ 3 ]

3 голосов
/ 04 ноября 2019

Зачем создавать что-то новое с такой маленькой разницей?

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

0 голосов
/ 04 ноября 2019

Вот одна из причин, по которой вы можете предпочесть привязку вида к привязке данных:

Библиотека привязки данных обрабатывает только макеты привязки данных, созданные с использованием тега <layout>. Файлы макета привязки данных немного отличаются и начинаются с корневого тега макета, за которым следуют элемент данных и корневой элемент представления

И это вызывает проблемы при использовании объединения:

Привязка данных не поддерживает include как прямой дочерний элемент элемента слияния . Например, следующий макет не поддерживается:

<?xml version="1.0" encoding="utf-8"?> 
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:bind="http://schemas.android.com/apk/res-auto">    <data>
       <variable name="user" type="com.example.User"/>    </data>    <merge><!-- Doesn't work -->
       <include layout="@layout/name"
           bind:user="@{user}"/>
       <include layout="@layout/contact"
           bind:user="@{user}"/>    </merge> 
</layout>
0 голосов
/ 04 ноября 2019

Привязка вида и библиотека привязки данных генерируют классы привязки, которые можно использовать для прямой ссылки на представления. Однако есть заметные различия:

Библиотека привязки данных обрабатывает только макеты привязки данных, созданные с использованием тега. Привязка вида не поддерживает переменные макета или выражения макета, поэтому ее нельзя использовать для привязки макетов к данным в XML.

Привязка вида ... https://developer.android.com/topic/libraries/view-binding

Привязка данных. .. https://developer.android.com/topic/libraries/data-binding

...