Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > Android

Android Разработка игр на платформе Android

Ответ
 
Опции темы
Старый 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)
Старый 12.09.2015, 10:56   #2
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Data Binding

Кто-нибудь пробовал эту штуку?

Я проверил на тестовом примере, делая всё по инструкции - работает.
Вставил в свой проект - работает. НО!
У меня перестала отображаться ListView.
Проверяю количество записей во вью - 4, на экране ничего нет.

Если убрать из кода биндинг
MainBinding binding DataBindingUtil.setContentView(thisR.layout.main);
User user = new User("Bind 1""Bind 2");
binding.setUser(user); 
не меняя xml, в котором есть связка для биндинга, то на месте значений @{user.name} просто пустота (это логично) и listview корректно отображается.

Пока что неуд.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 10:30.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com