Biblioteca de vinculação de dados Parte do Android Jetpack.
A Biblioteca de vinculação de dados é uma biblioteca de suporte que permite vincular componentes de interface nos seus layouts a fontes de dados no app usando um formato declarativo, em vez de programático.
Os layouts geralmente são definidos em atividades com código que chama métodos do framework
de interface. Por exemplo, o código a seguir chama findViewById() para encontrar um
widget TextView e vinculá-lo à propriedade userName da variável
viewModel:
Kotlin
findViewById<TextView>(R.id.sample_text).apply {
text = viewModel.userName
}
Java
TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());
O exemplo a seguir mostra como usar a biblioteca de vinculação de dados para atribuir texto
ao widget diretamente no arquivo de layout. Isso elimina a necessidade de chamar qualquer um dos
códigos Java mostrados acima. Observe o uso da sintaxe @{} na expressão de atribuição:
<TextView
android:text="@{viewmodel.userName}" />
A vinculação de componentes no arquivo de layout permite remover muitas chamadas de framework de IU nas atividades, tornando-as mais simples e fáceis de manter. Isso também pode melhorar o desempenho do app e ajudar a evitar vazamentos de memória e exceções de ponteiro nulo.
Como usar a Data Binding Library
Use as páginas a seguir para saber como usar a Biblioteca de vinculação de dados nos seus apps Android.
- Primeiros passos
- Saiba como preparar seu ambiente de desenvolvimento para trabalhar com a Biblioteca de vinculação de dados, incluindo suporte para código de vinculação de dados no Android Studio.
Layouts e expressões de vinculação
A linguagem de expressão permite que você escreva expressões que conectam variáveis às visualizações no layout. A biblioteca de vinculação de dados gera automaticamente as classes necessárias para vincular as visualizações no layout aos seus objetos de dados. A biblioteca oferece recursos como importações, variáveis e inclusões que podem ser usados nos seus layouts.
Esses recursos da biblioteca coexistem perfeitamente com os layouts já existentes.
Por exemplo, as variáveis de vinculação que podem ser usadas em expressões são definidas
dentro de um elemento data que é irmão do elemento raiz do layout da interface.
Os dois elementos são envolvidos em uma tag layout, conforme mostrado no exemplo
a seguir:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element -->
</layout>
- Trabalhar com objetos de dados observáveis
- A biblioteca de vinculação de dados oferece classes e métodos para observar mudanças nos dados. Você não precisa se preocupar em atualizar a IU quando a fonte de dados subjacente mudar. É possível tornar as variáveis ou as propriedades delas observáveis. A biblioteca permite que você torne objetos, campos ou coleções observáveis.
- Classes de vinculação geradas
- A biblioteca de vinculação de dados gera classes de vinculação que são usadas para acessar as variáveis e as visualizações do layout. Nesta página, mostramos como usar e personalizar as classes de vinculação geradas.
- Adaptadores de vinculação
Para cada expressão de layout, há um adaptador de vinculação que faz as chamadas de framework necessárias para definir as propriedades ou os listeners correspondentes. Por exemplo, o adaptador de vinculação pode chamar o método
setText()para definir a propriedade de texto ou chamar o métodosetOnClickListener()para adicionar um listener ao evento de clique. Os adaptadores de vinculação mais comuns, como os adaptadores para a propriedadeandroid:textusados nos exemplos desta página, estão disponíveis para uso no pacoteandroid.databinding.adapters. Para ver uma lista dos adaptadores de vinculação comuns, consulte adaptadores. Também é possível criar adaptadores personalizados, como mostrado no exemplo a seguir:
Kotlin
@BindingAdapter("app:goneUnless")
fun goneUnless(view: View, visible: Boolean) {
view.visibility = if (visible) View.VISIBLE else View.GONE
}
Java
@BindingAdapter("app:goneUnless")
public static void goneUnless(View view, Boolean visible) {
view.visibility = visible ? View.VISIBLE : View.GONE;
}
- Vincular visualizações de layout a componentes de arquitetura
- A Biblioteca de Suporte do Android inclui os Componentes da arquitetura, que podem ser usados para criar apps robustos, testáveis e de fácil manutenção. É possível usar os componentes de arquitetura com a biblioteca de vinculação de dados para simplificar ainda mais o desenvolvimento da sua interface.
- Vinculação bidirecional de dados
- A Data Binding Library é compatível com a vinculação bidirecional de dados. A notação usada para esse tipo de vinculação permite receber mudanças de dados em uma propriedade e detectar atualizações do usuário nessa propriedade ao mesmo tempo.
Outros recursos
Para saber mais sobre a vinculação de dados, consulte os seguintes recursos adicionais.
Amostras
Codelabs
Postagens do blog
- Android Data Binding Library: de campos observáveis a LiveData em dois passos (link em inglês)
- Vinculação de dados: lições aprendidas (link em inglês)
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Como vincular adaptadores
- Layouts e expressões de vinculação
- Classes de vinculação geradas