26

«Android Data Binding». Вадим Котов

  • Upload
    dataart

  • View
    351

  • Download
    0

Embed Size (px)

Citation preview

Page 1: «Android Data Binding». Вадим Котов
Page 2: «Android Data Binding». Вадим Котов

Data Binding in Android

Вадим Котов ([email protected])

Page 3: «Android Data Binding». Вадим Котов

О чем сегодня поговорим

●MVVM

●Активно используется в Windows Phone

●В Android не очень

Page 4: «Android Data Binding». Вадим Котов

Android Data Binding

●Анонсирован на I/O 2015

●Android Studio >= 1.3

●Версия Android API >= 2.1

●Используется кодогенерация

●Нужно подключить плагин в build.gradle

●Неплохая вводная документация

Page 5: «Android Data Binding». Вадим Котов

В главном build.gradle:

В app/build.gradle:

Page 6: «Android Data Binding». Вадим Котов
Page 7: «Android Data Binding». Вадим Котов

Наш Layout

●Синтаксис атрибутов binding - @{…}

●Для layout вида main_activity.xml будет сгенерирован класс вида MainActivityBinding в пакете databinding

●Имя сгенерированного класса можно кастомизировать

●Для всех View с id генерируются поля в MainActivityBinding

●Все переменные в блоке data также доступны

Page 8: «Android Data Binding». Вадим Котов

Наш Layout

Page 9: «Android Data Binding». Вадим Котов

Класс User

●Может быть POJO, Java bean

Page 10: «Android Data Binding». Вадим Котов

Сгенерированный код

Сгенерированные поля:

●MainActivityBinding.firstNameTextview

●MainActivityBinding.lastNameTextview

Page 11: «Android Data Binding». Вадим Котов

●findViewById

●Методы ButterKnife и др.

Page 12: «Android Data Binding». Вадим Котов

Обработка событий

Page 13: «Android Data Binding». Вадим Котов
Page 14: «Android Data Binding». Вадим Котов

Что еще можно

●Импорты классов внутрь блока data

●Выражения вида

–@{UnixDateConverter.convert(user.birthday)}

–android:text="@{map[key]}"

●Запрещенные операторы:

–this

–super

–new

явный вызов generics

Page 15: «Android Data Binding». Вадим Котов

Нотификация view

●3 механизма нотификации:

–ObservableObject

–ObservableFields

–ObservableCollections

●Не путать с Rx Observable!

Page 16: «Android Data Binding». Вадим Котов
Page 17: «Android Data Binding». Вадим Котов
Page 18: «Android Data Binding». Вадим Котов

Observable Fields

Page 19: «Android Data Binding». Вадим Котов

Two-way binding

●Из коробки не доступен, пока все плохо

●Энтузиасты делают попытки, пример https://medium.com/@fabioCollini/android-data-binding-f9f9d3afc761

Page 20: «Android Data Binding». Вадим Котов

Custom setters

Page 21: «Android Data Binding». Вадим Котов
Page 22: «Android Data Binding». Вадим Котов

Custom setters

Ссылка на полный пример -

https://blog.stylingandroid.com/data-binding-part-3/

Page 23: «Android Data Binding». Вадим Котов

Пример с установкой шрифтов

Thanks to +LisaWrayZeitouni

Page 24: «Android Data Binding». Вадим Котов

Binding элементов списка

●Удобная библиотека https://github.com/evant/binding-

collection-adapter

●Статья в блоге DataArt

●http://habrahabr.ru/company/dataart/blog/267735/

Page 25: «Android Data Binding». Вадим Котов

Подкаст о Data Binding

●Часовой подкаст-беседа авторов и Chet Haase, Tor Norbye

●http://androidbackstage.blogspot.ru/2015/09/episode-35-data-bound.html

Page 26: «Android Data Binding». Вадим Котов

Вопросы

@vkotovv

Surf

bit.ly/gdg2015-data-binding