Acesso e explicação detalhada do databinding do Android (1)

1. Introdução

         DataBinding é uma estrutura de componentes do Google Android que gerencia a ligação entre visualização e dados. DataBinding gerencia principalmente vários arquivos de layout, para que não tenhamos que instanciar a visualização do layout. A inicialização é feita diretamente por meio de DataBindingUitl.

Isso pode simplificar o código, reduzir a carga de trabalho e evitar o ponteiro nulo da exibição. O código no módulo Atividade/fragmento é bastante reduzido. O DataBinding realiza a ligação unidirecional ou bidirecional de dados ao arquivo de layout, o que ajuda a evitar vazamentos de memória e pode executar automaticamente a detecção nula para evitar ponteiros nulos.

2. Como usar

1. Apresentar a biblioteca de DataBinding

Basta adicionar o seguinte no nó{} android no arquivo de compilação do módulo

dataBinding { 
    ativado = verdadeiro 
}

Isso abre a biblioteca dataBinding, sincroniza o projeto e sincroniza a biblioteca com o local

2. Criação de layout e geração de arquivo de layout

1. Crie um novo arquivo de layout chamado: layout_databinding_simple

Existem duas maneiras de vincular o layout com DataBinding

O primeiro: preenchimento automático do IDE

             Mova o mouse sobre o código de layout, haverá um prompt de luz amarela e selecione Converter em layout de vinculação de dados

A ferramenta IDE concluirá automaticamente a transcodificação do layout do layout

 A segunda maneira: faça manualmente

Altere o layout raiz para layout, o layout raiz original permanece inalterado e adicione um nó de dados na parte superior do layout

<?xml version="1.0" encoding="utf-8"?>
<layout>

    <data>

        
    </data>

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/text_value"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>
</layout>

3. O arquivo de layout gera o arquivo de código correspondente

Após a configuração do layout, o IDE gerará automaticamente os arquivos correspondentes

nome do layout: layout_databinding_simple

Nome do arquivo gerado: LayoutDatabindingSimpleBinding, o formato é que o nome do arquivo de layout é sufixado com Binding

Observação: em relação à geração deste arquivo, muitos blogs técnicos não o apresentaram, mas simplesmente disseram uma frase, o que fez com que muitos novatos encontrassem o arquivo com o sufixo Binding.

Defina manualmente o nome do arquivo gerado pelos dados

<data class="MyTestData">

    <variable
        name="name"
        type="String" />
</data>

Desde que o nome da classe seja definido no nó de dados, os dados gerarão um arquivo definido pelo usuário, caso contrário, o método padrão do sistema será usado.

    lateinit var data:MyTestData;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        data=DataBindingUtil.setContentView<MyTestData>(this, R.layout.layout_databind_data)
    }

4. Carregue o arquivo de layout e gere o controlador correspondente

Conclua a configuração e o carregamento da exibição por meio da classe de ferramenta DataBindingUtil

var databinding = DataBindingUtil.setContentView<LayoutDatabindingSimpleBinding>( 
    this, 
    R.layout.layout_databinding_simple 
)

1.setContentView<T>

T: O tipo genérico passa diretamente a classe LayoutDatabindingSimpleBinding correspondente gerada pelo layout do layout,

Após o carregamento, a visualização foi inicializada, inclusive internamente, gerencie a visualização e os dados diretamente por meio da vinculação de dados

5. Introdução ao ViewDataBinding

ViewDataBinding é a classe de gerenciamento de exibição e dados, se você estiver em

Se você tiver um ID TextView no layout como textname, poderá obter o objeto diretamente com databinding.textname

Se você tiver um nó chamado name no nó de dados de dados de layout, poderá definir a fonte de dados por meio de databinding.setName()

Os dados vinculados no layout são definidos e atualizados por meio de ViewDataBinding

1. Atualizar dados

<dados>

</data>

2. Obter visualização

A visualização obtida está diretamente relacionada ao id correspondente. Se o id não for declarado, ele não aparecerá na vinculação

5. Vinculação de dados

A vinculação da fonte de dados é muito importante. Sem a fonte de dados, a exibição não tem valor prático.

Como simplesmente vincular a fonte de dados?

1. Defina a fonte de dados

Tipo simples, tipo complexo, definido pelo usuário, tipo simples, sob o pacote Java.lang, pode ser usado diretamente sem importar. Para conteúdo não simples, você precisa importar o pacote correspondente ao usá-lo, como segue:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

        <import type="com.example.wiik.testdemo.databinding.data.MyPerson" />



        <variable
            name="person"
            type="MyPerson" />

        <variable
            name="name"
            type="String" />

        <variable
            name="age"
            type="String" />

        <variable
            name="sex"
            type="Boolean" />



    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Button
            android:id="@+id/btn_click"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="点击" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="姓名 :" />

            <TextView
                android:id="@+id/textname"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@{name}" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="年纪 :" />

            <TextView
                android:id="@+id/textage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@{age}" />
        </LinearLayout>


    </LinearLayout>
</layout>

Existem dois sob o nó de dados

1.import: O caminho da solução para importar variáveis, que é um conceito com a introdução no pacote

                Import é a classe principal, que é fornecida para uso de variável, mas import também pode fornecer nomes de variáveis ​​personalizados para classes importadas: alias

        <import
            alias="MyDaya"
            type="com.example.wiik.testdemo.databinding.data.Data" />

alias: é para resolver o nome da variável personalizada de importação. Sabemos que o mesmo nome de arquivo não pode aparecer com o mesmo nome de pacote. Se tivermos classes de dados com nomes de pacote diferentes, importe-os para o layout xml por meio de importação e descubra que o nome da classe já existe. Neste momento, personalizamos um variável através do nome alternativo pode ser resolvida.


        <variable
            name="data"
            type="MyDaya" />

2. variável: declaração da variável, nome=definição nome, tipo: tipo

2. visualizar vinculação de dados

Se os dados da exibição precisarem ser vinculados, a fonte de dados vem das configurações no nó de dados.

Formato dos dados vinculados: @{variável}

1. Vinculando dados complexos: @{person.name}

2. Basta consultar o nome dos dados diretamente

       <TextView
                android:id="@+id/textage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@{age}" />

3. Tratamento de erros

No caso do seguinte erro, no texto gerado

        Isso ocorre porque o layout do layout falhou ao gerar o arquivo java ou kt correspondente. Como o nó de dados ou exibição do layout tem um erro ao fazer referência,

solucionar problemas

1. Exclua a referência @{} dos dados na exibição

        Exclua a associação de dados e, em seguida, sincronize os dados para ver se a solução de problemas foi concluída

2. Erro de referência de dados do nó de dados

        A primeira etapa não foi resolvida após a investigação. Comece a investigar o nó de dados, cancele o tipo de dados complexo e verifique se o tipo no nó variável pode ser associado ao código. Se não puder ser associado, significa que o tipo tipo está errado

        Em segundo lugar, verifique se a importação está correta e associe diretamente o código através do ide.Se conseguir pular normalmente, significa que a associação está normal.

Após a conclusão da investigação acima, sincronize a ferramenta ide novamente e gere novamente os arquivos correspondentes.

Acho que você gosta

Origin blog.csdn.net/qq36246172/article/details/128117489
Recomendado
Clasificación