Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Data Binding Library

Data Binding Library   Parte do Android Jetpack.

A Data Binding Library é uma biblioteca de apoio que permite vincular componentes de IU dos seus layouts a fontes de dados do 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 de framework da IU. Por exemplo, o código abaixo chama findViewById() para localizar 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 Data Binding Library 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 da IU presentes nas suas atividades, tornando-as mais simples e fáceis de manter. Ela 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 aprender a usar a Data Binding Library nos seus app Android.

Primeiros passos
Aprenda a preparar seu ambiente de desenvolvimento para trabalhar com a Data Binding Library, incluindo suporte para código de vinculação de dados no Android Studio.

Layouts e expressões de vinculação

A linguagem de expressões permite compor expressões que conectam variáveis às visualizações do layout. A Data Binding Library gera automaticamente as classes necessárias para vincular as visualizações do layout com seus objetos de dados. Ela fornece recursos como importações, variáveis e inclusões que você pode usar nos seus layouts.

Esses recursos da biblioteca coexistem perfeitamente com os layouts 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 IU. Os dois elementos são agrupados 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 Data Binding Library fornece classes e métodos para observar facilmente as alterações de dados. Você não precisa se preocupar em atualizar a IU quando a fonte de dados subjacente é alterada. É possível tornar suas variáveis ou propriedades observáveis. A biblioteca permite que você torne objetos, campos ou coleções observáveis.
Classes de vinculação geradas
A Data Binding Library gera classes de vinculação que são usadas para acessar as variáveis e visualizações do layout. Esta página mostra como usar e personalizar as classes de vinculação geradas.
Como vincular adaptadores
Para cada expressão de layout, existe um adaptador de vinculação que faz as chamadas de framework necessárias para configurar as propriedades ou os listeners correspondentes. Por exemplo, o adaptador de vinculação pode chamar o método setText() para definir a propriedade text ou chamar o método setOnClickListener() para adicionar um listener ao evento de clique. Os adaptadores de vinculação mais comuns, como os adaptadores da propriedade android:text usada nos exemplos desta página, estão disponíveis para uso no pacote android.databinding.adapters. Para ver uma lista de adaptadores de vinculação comuns, consulte adaptadores. Também é possível criar adaptadores personalizados, conforme 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 exibições de layout a componentes de arquitetura
A Android Support Library inclui os componentes de arquitetura, que você pode usar para projetar apps robustos, testáveis e de fácil manutenção. Use os componentes de arquitetura com a Data Binding Library para simplificar ainda mais o desenvolvimento da sua IU.
Vinculação de dados bidirecional
A Data Binding Library é compatível com a vinculação de dados bidirecional. A notação usada para esse tipo de vinculação é compatível com a capacidade de receber alterações de dados em uma propriedade e ouvir atualizações do usuário para essa propriedade ao mesmo tempo.

Outros recursos

Para saber mais sobre vinculação de dados, consulte os seguintes recursos adicionais.

Amostras

Codelabs

Publicações do blog