O documento descreve como configurar e usar a API de Data Binding no Android, incluindo: (1) configurar o Data Binding no arquivo build.gradle, (2) acessar recursos e usar variáveis, (3) criar classes POJO e de eventos, e (4) vincular layouts, modelos e controladores.
4. A API de DataBinding foi lançada no Google I/O de 2015 e tem o intuito de
facilitar a vida dos desenvolvedores removendo da Activity/Fragment muita da
lógica de UI feitas por esses componentes.
Apesar de ter sido lançado juntamente com o Android 6, a API de Data Binding é
uma biblioteca separada do sistema operacional e pode ser utilizada a partir do
Android 2.1 (API Level 7).
5.
6. CONFIGURAÇÃO NO GRADLE
Para configurar seu aplicativo para usar a ligação de dados,
adicione o elemento dataBinding ao seu arquivo build.gradle no
módulo de aplicação. Use o seguinte trecho de código para
configurar a ligação de dados:
android {
....
dataBinding {
enabled = true
}
}
7. Três coisas que por si só já valem a utilização do Data Binding são:
(1) não utilizar findViewById;
(2) associação de eventos a componentes ;
(3) sincronização de valores do model para a view.
21. Exemplo de parametros strings.xml
No xml
<string name="resource1">Hello string: %1$s, and hello float: %2$.2f.</string>
No Java
String svalue = "test";
float sfloat= 3.1415926;
String sresult = getString(R.string.resource1, svalue, sfloat);
22. Recursos
Podemos acessar os recursos da aplicação normalmente.
Se tivéssemos este texto no strings.xml
<string name="nomeComSobrenome">%1$s %2$s</string>
Poderiamos utilizar o recurso com o Data Binding da seguinte forma:
android:text=”@{@string/nomeComSobrenome(usuario.nome,usuario.sobrenome)}”
Todos os recursos podem ser acessados, mas alguns tem uma notação especial:
@stringArray, @intArray, @animator, @color, @colorStateLis e @typedArray.
33. POJO USUARIO
public class Usuario {
public String nome;
public String sobrenome;
public Usuario(String nome, String sobrenome) {
This.nome = nome;
This.sobrenome = sobrenome;
}
}
34. Outro exemplo com BaseObservable
import android.databinding.BaseObservable;
import android.databinding.ObservableField;
public class Usuario extends BaseObservable {
public ObservableField<String> nome = new ObservableField<>();
public ObservableField<String> sobrenome = new ObservableField<>();
public Usuario(String nome, String sobrenome) {
this.nome.set(nome);
this.sobrenome.set(sobrenome); }
}
35. Classe do Evento
public class TratadorMagico {
public boolean longClick(View v){
Log.d("Script", "longClick!");
return true;
}
public void click(View v){
Log.d("Script", "click!");
}
}
40. Referências
Palestra sobre Data Binding no Android Dev Summit (em inglês)
https://www.youtube.com/watch?v=NBbeQMOcnZ0
Hangout com o Neto Marin (Google Developer Advocate)
https://www.youtube.com/watch?v=JWpn4yyIJxc
Blog de Nelson Glauber
http://www.nglauber.com.br/2016/05/android-data-binding.html
Data Binding Guide (Documentação oficial)
http://developer.android.com/intl/pt-br/tools/data-binding/guide.html