Часть Android Jetpack.

Полное руководство по привязке данных Android (часть первая)

Больше нет findViewById ()

"Никогда не переставай учиться; Потому что, когда мы перестаем учиться, мы перестаем расти »

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

Я говорил о привязке данных в своих предыдущих статьях, таких как Как создать элементы RecyclerView, расширяющиеся с помощью анимации, но если вы ничего не знаете о привязке данных, читайте дальше, поскольку я проведу вас через все аспекты.

Что такое привязка данных?

Привязка данных Android является частью android jetpack - набора инструментов, который помогает разработчикам создавать высококачественные приложения. Если вы разработчик и имеете некоторый опыт разработки приложений для Android, вы знакомы с findViewById(), методом объявления представлений в действии. Допустим, я создаю приложение, в котором мое имя отображается в textView. Здесь я показываю оба способа определения представления, с привязкой данных и без нее.

Примечание. Я опускаю детали XML и действий для краткости.

Без привязки данных

TextView myName = findViewById(R.id.m);
myName.setText(“Mustufa Ansari”)

С привязкой данных

<TextView
    android:text="@{modelClass.userName}" />

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

Вы можете ясно видеть, что в части привязки данных в приведенном выше коде я объявил свое имя пользователя в файле XML, используя modelClass непосредственно в нашей деятельности. После этого вам не нужно добавлять findViewById() в свою активность, чтобы найти textview, а затем устанавливать в нем userName .

Начиная

Сначала я добавляю небольшую строку кода в ваш build.gradle, чтобы включить привязку данных в вашем проекте:

dataBinding{
   enabled true
}

Затем я создаю простое приложение, которое показывает текст в textViews. Я покажу вам оба способа представления данных в textView, с и без привязки данных, чтобы вы могли понять процесс.

Я добавил зависимость привязки данных в свой build.gradle файл:

А теперь давайте создадим модельный класс. Как я упоминал ранее, привязка данных работает с классом модели. При использовании привязки данных рекомендуется иметь класс модели - это полный способ использования привязки данных в вашем приложении.

Я создаю класс модели под названием Person.java, в котором я определяю две переменные: name и age.

Теперь давайте покажем некоторые данные в нашем приложении. Я разделю это на два этапа - с привязкой данных и без привязки данных.

Без привязки данных

Мой activity_main.xml выглядит так:

Мой MainActivity.java выглядит так:

Это старый способ объявления представлений и привязки представлений к данным.

Нажмите "Беги", и вы получите такой результат:

С DataBinding

Чтобы реализовать привязку данных, нам нужно обернуть весь макет тегом <layout></layout>, например:

Теперь, в привязке данных, мы можем напрямую связать наши представления с данными. Но для этого мы должны ввести еще один термин привязки данных: тег the<data></data>. В этом теге данных мы можем импортировать наш требуемый класс модели, который должен быть привязан к представлениям:

<data>
    <variable
        name="person"
        type="com.codixlab.databinding.Person" />
</data>

Это означает, что мы присоединим этот класс модели к нашему макету. Здесь вы можете видеть, что у нас есть тег variable, который имеет два атрибута: name и type.

name: То, что вы называете этим классом модели, - ваше решение, но хорошей практикой является дать ему то же имя, что и ваш класс модели.

type: это тип name переменной. Здесь мы присоединяем класс Person к макету, поэтому тип - путь к классам Person.java.

Теперь наш activity_main.xml выглядит так:

Следующая часть - связать наши представления с данными. Для этого есть способ привязки макета к данным с помощью '@{}' с представлениями. Посмотрим, как это реализовать:

Здесь я привязываю свое свойство TextView text к свойству класса модели name, чтобы имя, полученное в результате действия, отображалось в этом textView . Есть ли в этом смысл?

Теперь с макетом все в порядке, пора отредактировать наш MainActivity.java.

Во-первых, нам нужно сообщить нашему действию, что мы будем использовать привязку данных, потому что ему ничего не известно о том, что мы сделали в XML-файле. Для этого привязка данных создает класс, когда мы включаем наш макет в тег <layout>. Этот класс просто импортировать в шаблон. Каким бы ни было имя макета вашей деятельности, имя вашего класса привязки будет соответствовать этому файлу макета. Давайте взглянем.

Слово «Привязка» будет добавлено самой библиотекой привязки данных.

Примечание. Если вы не можете импортировать класс активности привязки данных, просто перестройте проект.

В этой строке мы сохраняем весь наш XML в переменной bi. С помощью этой переменной мы можем получить доступ ко всему макету и каждому представлению, присутствующему в нем. Назовите его как хотите - я просто назвал егоbi для мгновенного использования.

Пришло время прикрепить данные к представлению.

Вы помните, что мы сделали с данными в файле XML?

Правильно, мы установили класс модели с именем person. Привязка данных очень удобна - она ​​генерирует метод установки для данных. Если вы вызовете bi и нажмете . , вы увидите что-то вроде setPerson(), в котором вы можете установить класс своей модели. Затем он будет прикреплен с видом:

Теперь нажмите «Выполнить», и вы увидите результат:

Сравним код с привязкой данных и без нее:

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

Это первая часть серии статей - нам еще многое предстоит узнать, мы еще не закончили с привязкой данных!

Щелкните здесь, чтобы перейти к части 2

Подпишитесь на CodixLab для получения дополнительных технических знаний.

Считаете эту статью полезной? Ознакомьтесь с моими наиболее читаемыми статьями о лучшем программировании ниже: