Upload
dataart
View
351
Download
0
Embed Size (px)
Citation preview
Data Binding in Android
Вадим Котов ([email protected])
О чем сегодня поговорим
●MVVM
●Активно используется в Windows Phone
●В Android не очень
Android Data Binding
●Анонсирован на I/O 2015
●Android Studio >= 1.3
●Версия Android API >= 2.1
●Используется кодогенерация
●Нужно подключить плагин в build.gradle
●Неплохая вводная документация
В главном build.gradle:
В app/build.gradle:
Наш Layout
●Синтаксис атрибутов binding - @{…}
●Для layout вида main_activity.xml будет сгенерирован класс вида MainActivityBinding в пакете databinding
●Имя сгенерированного класса можно кастомизировать
●Для всех View с id генерируются поля в MainActivityBinding
●Все переменные в блоке data также доступны
Наш Layout
Класс User
●Может быть POJO, Java bean
Сгенерированный код
Сгенерированные поля:
●MainActivityBinding.firstNameTextview
●MainActivityBinding.lastNameTextview
●findViewById
●Методы ButterKnife и др.
Обработка событий
Что еще можно
●Импорты классов внутрь блока data
●Выражения вида
–@{UnixDateConverter.convert(user.birthday)}
–android:text="@{map[key]}"
●Запрещенные операторы:
–this
–super
–new
явный вызов generics
Нотификация view
●3 механизма нотификации:
–ObservableObject
–ObservableFields
–ObservableCollections
●Не путать с Rx Observable!
Observable Fields
Two-way binding
●Из коробки не доступен, пока все плохо
●Энтузиасты делают попытки, пример https://medium.com/@fabioCollini/android-data-binding-f9f9d3afc761
Custom setters
Custom setters
Ссылка на полный пример -
https://blog.stylingandroid.com/data-binding-part-3/
Пример с установкой шрифтов
Thanks to +LisaWrayZeitouni
Binding элементов списка
●Удобная библиотека https://github.com/evant/binding-
collection-adapter
●Статья в блоге DataArt
●http://habrahabr.ru/company/dataart/blog/267735/
Подкаст о Data Binding
●Часовой подкаст-беседа авторов и Chet Haase, Tor Norbye
●http://androidbackstage.blogspot.ru/2015/09/episode-35-data-bound.html
Вопросы
@vkotovv
Surf
bit.ly/gdg2015-data-binding