Тема: Data Binding
Показать сообщение отдельно
Старый 11.09.2015, 07:42   #1
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Data Binding

Новая фича, доступная в суппорт библиотеке v7.

Подробное описание: Data Binding Guide

Суть:
связывание данных и интерфейса
без необходимости
программно назначать значения параметров UI.

В чём профит? (мне этого достаточно)

* Упрощение. Для простых данных, типа обновления строкового значения в лэйауте, можно привязать нужную переменную к элементу TextView в xml и забыть о ней (*).
* Обновление UI из других потоков без необходимости использовать Handler или runOnUIThread (Communicating with the UI Thread).

(*) чтобы при изменении переменной в коде обновлялось значение в UI нужно добавить интерфейс Observable, для простых данных типа String, int и т.п. уже сделаны обёртки типа ObservableString.


Пример типичной ситуации:

Нужно обновить интерфейс данными, полученными по колбэку.

public void onDataChanged(String newValue) {
    
runOnUiThread(new Runnable() {
        @
Override
        
public void run() {
            
TextView tv currentFragment.findViewById(R.id.textViewData); //либо этот TextView запоминаем при создании фрагмента, чтобы не искать
            
tv.setText(newValue);
        }
    });

А если использовать биндинг, то в xml добавляем

...
<
data>
    <
variable name="data" type="com.myproj.Data"/>
</
data>
....
 <
TextView android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="@{data.strValue}"/> 
и для колбэка

private ObservableString strValue "";
public 
void onDataChanged(String newValue) {
    
strValue newValue;

Это не статья, просто новость. Поэтому примеры оторваны от реальности.

Ну и привет майкрософту, у них модель биндинга изначально применяется в WindowsPhone.
Data binding for Windows Phone 8
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (11.09.2015)