Introdução ao Android Data Binding

Milton Filho
Android Dev BR
Published in
2 min readOct 5, 2015

Salve galera,

Hoje trago pra vocês uma das melhores bibliotecas que já utilizei no Android, neste exato momento estou digitando com os pés para poder aplaudir o Google por essa maravilha que é a biblioteca de Data Binding. A ideia é criar uma forma mais concreta de manipulação de interfaces, com isso conseguiremos vincular nossa view com uma ou mais classes. Mas afinal o que ganhamos com isso? Imaginem um mundo sem findById ou nenhum tipo de lógica de interface em nossas Activities. Lindo, não? Vamos fazer um pequeno exemplo para demonstrar a dinâmica da coisa.

Primeiramente, precisamos fazer referência a biblioteca em nosso build.gradle do projeto:

Atualmente ela esta em RC21 um detalhe importante é que o plugin do gradle tem que ser versão 1.3.0 ou superior.

Feito isso iremos aplicar o plugin em nosso build.gradle do módulo:

Agora vamos fazer uma pequena alteração na nossa view:

Percebam que agora o nó raiz é do tipo Layout, com isto o gradle irá gerar automaticamente uma classe contendo referência para todos os elementos com id definidos, o padrão de arquivo gerado é ViewNomeBinding, logo para activity_main.xml será gerado uma classe ActivityMainBinding.

Agora utilizaremos o método setContentView da classe DataBindingUtil para carregar a interface em nossa Activity, este método retorna uma instância da classe de bind gerada e assim poderemos acessar os controles da view como no exemplo abaixo.

Uma outra possiblidade bacanuda é a de definir variáveis dentro do arquivo de layout, para um bind mais complexo. Para demonstrar, vamos criar uma classe Pessoa com duas propriedades, Nome e Idade:

…e fazer alguns ajustes no layout:

Percebam que inserimos um nó data logo abaixo do nó layout, dentro deste nó que iremos definir as variáveis. No exemplo acima estamos definindo uma variável do tipo Pessoa. Agora utilizaremos o padrão @{} para consumir nossas variáveis como pode ser visto no text dos TextView. O legal é que a biblioteca não se limita a apenas binds simples, podemos ter binds mais complexos como o exemplo abaixo, onde a visibilidade do controle depende de uma propriedade:

O gradle irá gerar na classe de binding um setter para cada variável. Depois disso precisamos apenas passar um objeto para ela e tudo funciona lindamente! :D

Bacana, né? Com isto teremos Activities mais limpas e teremos uma facilidade na exibição de dados, com a lógica de interface toda conectada evitaremos possíveis quebras no layout e ajudará bastante na produtividade do dia a dia de desenvolvimento.

Nos próximos artigos iremos abordar outros assuntos relacionados a bind, como bind de eventos, passagem de parâmetros para includes, utilização em RecyclerView, entre outros detalhes.

--

--