O que é?
Para evitar pesquisar no layout a view desejada, podemos definir um vínculo com a view e uma variável de uma classe. Este processo é denominado Data Binding.
Como utilizar?
Existem 5 passos para poder utilizar o Data Binding:
1. Habilitar o Data Binding no build.gradle, isso é feito dentro da seção android, como mostra o código abaixo:
android{
dataBinding.enabled = true;
}
2. Adicionar <layout> como tag raíz da interface, Android vai criar automaticamente uma classe de Binding para os xml de layout que possuir esta tag como raíz, como mostra o exemplo abaixo:
<layout
xmlns:android="http//schemas.android.com/apk/res/android">
</layout>
3. Criar uma instância de Binding. Depois do passo 2, o Android deve criar as classes de binding baseadas no nome do arquivo XML dos layouts. Por exemplo, um arquivo xml com o nome "activity_main.xml" gerará uma classe chamada ActivityMainBinding. Onde você gerenciar os bindings, tenha certeza de instanciar esta classe para poder realizar os bindings.
4. Setar a view de conteúdo usando o DatabindingUtil, aqui nós vamos inflar o layout para o Data Binding. Usaremos o método estático setContentView da classe DataBindingUtil para isto. Ele leva dois parâmetros, a primeira a atividade e o segundo, a referência do layout a ser inflado. O código abaixo mostra um exemplo combinado do passo 3 e 4:
public class NameActivity extends Activity{
ActivityNameBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_name);
}
}
5. Vincular cada atributo da view com seus respectivos dados. A melhor maneira de fazer isso é criar uma classe modelo dos atributos que vão ser vinculados, e então, na atividade, usar cada atributo do objeto de bind com o atributo do modelo, como no exemplo abaixo:
public class NameActivity extends Activity{
ActivityNameBinding binding;
public void vincular(){
Model m = loadModel(); //apenas abstrai que obtém o dado aqui
binding.textViewString1.setText(m.string1);
binding.textViewString2.setText(m.string2);
binding.textViewString3.setText(m.string3);
}
public class Model{
public string string1;
public string string2;
public string string3;
}
}
Nenhum comentário:
Postar um comentário