SlideShare a Scribd company logo
1 of 40
#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

More Related Content

Viewers also liked

Manga Port 20110829
Manga Port 20110829Manga Port 20110829
Manga Port 20110829
carolfurness
 
APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4
APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4
APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4
Larissa Candido
 

Viewers also liked (17)

Android Wear - Workshop por @cesarnogcps
Android Wear - Workshop por @cesarnogcpsAndroid Wear - Workshop por @cesarnogcps
Android Wear - Workshop por @cesarnogcps
 
Xamarin e Azure - Mobile e Cloud First
Xamarin e Azure - Mobile e Cloud FirstXamarin e Azure - Mobile e Cloud First
Xamarin e Azure - Mobile e Cloud First
 
Manga Port 20110829
Manga Port 20110829Manga Port 20110829
Manga Port 20110829
 
MIMO + Spotify
MIMO + SpotifyMIMO + Spotify
MIMO + Spotify
 
Portfólio D'Zuca Comunicação e Design
Portfólio D'Zuca Comunicação e DesignPortfólio D'Zuca Comunicação e Design
Portfólio D'Zuca Comunicação e Design
 
Trabalhos Variados F | Estúdio 196 Branding & Design
Trabalhos Variados F | Estúdio 196 Branding & DesignTrabalhos Variados F | Estúdio 196 Branding & Design
Trabalhos Variados F | Estúdio 196 Branding & Design
 
Websites
WebsitesWebsites
Websites
 
Ideias Todo Mundo Tem
Ideias Todo Mundo TemIdeias Todo Mundo Tem
Ideias Todo Mundo Tem
 
Desafios da tecnologia para escritórios contábeis
Desafios da tecnologia para escritórios contábeisDesafios da tecnologia para escritórios contábeis
Desafios da tecnologia para escritórios contábeis
 
Apresentação D1000 Institucional
Apresentação D1000 InstitucionalApresentação D1000 Institucional
Apresentação D1000 Institucional
 
Conta Azul: de Joinville a Silicon Valley
Conta Azul: de Joinville a Silicon ValleyConta Azul: de Joinville a Silicon Valley
Conta Azul: de Joinville a Silicon Valley
 
Além do mundo acadêmico - O que fazer após a graduação?
Além do mundo acadêmico - O que fazer após a graduação? Além do mundo acadêmico - O que fazer após a graduação?
Além do mundo acadêmico - O que fazer após a graduação?
 
APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4
APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4
APRESENTACAO - ITAÚ – FEITO PARA VOCÊ - LARISSA CANDIDO_v4
 
Não aguenta mais investir no Google? A solução pode estar no seu Suporte ao C...
Não aguenta mais investir no Google? A solução pode estar no seu Suporte ao C...Não aguenta mais investir no Google? A solução pode estar no seu Suporte ao C...
Não aguenta mais investir no Google? A solução pode estar no seu Suporte ao C...
 
Webinar: Centro de Gestão Integrada: Sua empresa ainda vai ter um!
Webinar: Centro de Gestão Integrada: Sua empresa ainda vai ter um!Webinar: Centro de Gestão Integrada: Sua empresa ainda vai ter um!
Webinar: Centro de Gestão Integrada: Sua empresa ainda vai ter um!
 
MobileConf 2014 - Xamarin - Desenvolvimento multiplataforma feito da maneira ...
MobileConf 2014 - Xamarin - Desenvolvimento multiplataforma feito da maneira ...MobileConf 2014 - Xamarin - Desenvolvimento multiplataforma feito da maneira ...
MobileConf 2014 - Xamarin - Desenvolvimento multiplataforma feito da maneira ...
 
Dicas de como pesquisar no Google
Dicas de como pesquisar no GoogleDicas de como pesquisar no Google
Dicas de como pesquisar no Google
 

Similar to Data Binding Android - Levi Saturnino

Data Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI AndroidData Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI Android
Vinícius Thiengo
 
Android About Page API Para Construir a Tela Sobre
Android About Page API Para Construir a Tela SobreAndroid About Page API Para Construir a Tela Sobre
Android About Page API Para Construir a Tela Sobre
Vinícius Thiengo
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
Erisvaldo Junior
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
Vinícius Thiengo
 

Similar to Data Binding Android - Levi Saturnino (20)

Acessando banco de dados remoto com android
Acessando banco de dados remoto com android Acessando banco de dados remoto com android
Acessando banco de dados remoto com android
 
Data Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI AndroidData Binding Para Vinculo de Dados na UI Android
Data Binding Para Vinculo de Dados na UI Android
 
Usando a data grid wpf
Usando a data grid wpfUsando a data grid wpf
Usando a data grid wpf
 
Android DevConference - Data Binding: Código limpo, manutenção garantida
Android DevConference - Data Binding: Código limpo, manutenção garantidaAndroid DevConference - Data Binding: Código limpo, manutenção garantida
Android DevConference - Data Binding: Código limpo, manutenção garantida
 
Android About Page API Para Construir a Tela Sobre
Android About Page API Para Construir a Tela SobreAndroid About Page API Para Construir a Tela Sobre
Android About Page API Para Construir a Tela Sobre
 
Apostila Android
Apostila AndroidApostila Android
Apostila Android
 
Android Para Iniciantes
Android Para IniciantesAndroid Para Iniciantes
Android Para Iniciantes
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com android
 
Android + firebase
Android + firebaseAndroid + firebase
Android + firebase
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
 
Hello World Android
Hello World AndroidHello World Android
Hello World Android
 
Aula 1 view model livedata e databinding.pptx
Aula 1   view model livedata e databinding.pptxAula 1   view model livedata e databinding.pptx
Aula 1 view model livedata e databinding.pptx
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaAprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
 
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaAprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Banco de Dados - Android
 

Recently uploaded

Recently uploaded (8)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Data Binding Android - Levi Saturnino

  • 3. DATA BINDING Android - Levi Saturnino
  • 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.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 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.
  • 23.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. Passo a Passo para implementação do Data Binding
  • 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!"); } }
  • 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"> <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>
  • 38. 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()); }
  • 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