#IO16Extended #IO16Recife
+LeviSaturnino
@levisaturnino
levisaturnino@gmail.com
DATA BINDING
Android - Levi Saturnino
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).
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
}
}
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.
COM DATA BINDING
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);
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.
<string name="priceFormat">%1$.2f</string>
Passo a Passo para
implementação do Data Binding
POJO USUARIO
public class Usuario {
public String nome;
public String sobrenome;
public Usuario(String nome, String sobrenome) {
This.nome = nome;
This.sobrenome = sobrenome;
}
}
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); }
}
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!");
}
}
Layout XML - ROOT
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="usuario"
type="dominando.android.databinding.Usuario" />
<variable
name="tratador"
type="dominando.android.databinding.TratadorMagico"/>
</data>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" android:orientation="vertical">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{usuario.nome +' '+ usuario.sobrenome}"
android:onClick="@{tratador.click}"
android:onLongClick="@{tratador.longClick}"/>
<EditText android:id="@+id/edtNome"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/edtSobrenome"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</layout>
Classe do MAIN
public class MainActivity extends AppCompatActivity {
Usuario usuario;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding =
DataBindingUtil.setContentView(this, R.layout.activity_main);
usuario = new Usuario("Levi", "Saturnino");
binding.setUsuario(usuario);
binding.setTratador(new TratadorMagico());
}
Tela final
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

Data Binding Android - Levi Saturnino

  • 1.
  • 2.
  • 3.
    DATA BINDING Android -Levi Saturnino
  • 4.
    A API deDataBinding 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).
  • 6.
    CONFIGURAÇÃO NO GRADLE Paraconfigurar 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 quepor 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.
  • 13.
  • 21.
    Exemplo de parametrosstrings.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 osrecursos 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.
  • 24.
  • 32.
    Passo a Passopara implementação do Data Binding
  • 33.
    POJO USUARIO public classUsuario { public String nome; public String sobrenome; public Usuario(String nome, String sobrenome) { This.nome = nome; This.sobrenome = sobrenome; } }
  • 34.
    Outro exemplo comBaseObservable 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 publicclass TratadorMagico { public boolean longClick(View v){ Log.d("Script", "longClick!"); return true; } public void click(View v){ Log.d("Script", "click!"); } }
  • 36.
    Layout XML -ROOT <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="usuario" type="dominando.android.databinding.Usuario" /> <variable name="tratador" type="dominando.android.databinding.TratadorMagico"/> </data>
  • 37.
    <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextViewandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{usuario.nome +' '+ usuario.sobrenome}" android:onClick="@{tratador.click}" android:onLongClick="@{tratador.longClick}"/> <EditText android:id="@+id/edtNome" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/edtSobrenome" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </layout>
  • 38.
    Classe do MAIN publicclass MainActivity extends AppCompatActivity { Usuario usuario; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); usuario = new Usuario("Levi", "Saturnino"); binding.setUsuario(usuario); binding.setTratador(new TratadorMagico()); }
  • 39.
  • 40.
    Referências Palestra sobre DataBinding 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