Разница между импортом и переменной при привязке данных? - PullRequest
0 голосов
/ 04 сентября 2018

После просмотра документации по привязке данных о разнице между <import/> и <variable/> неясно, как они отличаются. Ниже приведены примеры, взятые со страницы документации.

<import type="com.example.real.estate.View" alias="Vista"/>

выглядит как эквивалент

<variable name="user" type="com.example.User"/>

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

<data>
    <import type="com.example.MyStringUtils"/>
    <variable name="user" type="com.example.User"/>
</data>
…
<TextView
   android:text="@{MyStringUtils.capitalize(user.lastName)}"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>

Единственное отличие, которое я вижу из примеров, состоит в том, что вы можете вызывать методы import, но не variable.

1 Ответ

0 голосов
/ 04 сентября 2018

Вы используете variable, если хотите передать некоторые данные в представления. В вашем примере у вас есть переменная пользователя типа User, и вы используете ее для установки имени пользователя в TextView. Вы можете вызывать переменные методы - user.lastName эквивалентно user.getLastName()

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

...