Non ho ricevuto risposte soddisfacenti. Quindi ecco i suggerimenti che sono un riepilogo delle mie conoscenze sull'associazione dei dati.
Suggerimenti per la risoluzione dei problemi di associazione dei dati
Aggiornare
Per ottenere errori e suggerimenti più accurati , consiglio vivamente di aggiornare la versione del plug-in Android Studio e Gradle all'ultima. Perché non sto affrontando molti problemi dopo la versione AS 3.2.
Guarda l' ultimo Android Studio e l' ultimo plug-in Gradle .
Soluzione originale
Dopo aver letto questa risposta, non rimarrai bloccato in problemi di generazione automatica di associazione dati per classi e variabili di dati .
Controlla questi punti uno per uno. Ognuno di questi può fare il tuo lavoro. Il punto 3 per ultimo è molto importante, quindi non perderlo.
1. Verificare se l'associazione dati è abilitata
Dovresti avere il data binding abilitato in build.gradle
. In caso contrario, aggiungi questo e Sync .
android {
...
dataBinding {
enabled = true
}
...
}
2. Il layout di verifica viene convertito in layout di rilegatura
Ora, se si desidera generare la classe di associazione dati, è necessario eseguire il wrapping xml layout
con l'associazione dati ( <layout
tag). Qualcosa come questo.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
Insieme a questo, controlla se i nomi delle variabili di associazione sono corretti come nella classe del modello di visualizzazione
3. Nome classe Binding generato automaticamente?
La classe di associazione dati dovrebbe essere generata dopo aver creato il layout di associazione.
Se il nome layout è in caso di serpente activity_main.xml
, allora i dati di classe vincolante verrà generato in caso di cammello come ActivityMainBinding
.
4. Non riesci a visualizzare il suggerimento di importazione?
A volte durante la digitazione ActivityMai...
, non viene visualizzato alcun suggerimento , in tal caso importa manualmente .
import <yourpackage>databinding.ActivityMainBinding;
5. Leggere Build Fail Logcat
La tua classe di associazione e le nuove variabili nel layout non verranno generate se la tua build fallisce. Quindi prima Crea progetto con Ctrl + F9 (Compila> Crea progetto) .
- Se una build fallisce, vedi cos'è un errore, di solito abbiamo errori nei campi di layout. I log degli errori indicheranno il numero della riga di errore con il problema.
- Il binding potrebbe non riuscire e causare errori stupidi , come errori di sintassi o importazione mancante. In tal caso, otterrai logcat pieno di errori di classi di binding. Ma dovresti leggere logcat completo per trovare il problema appropriato .
6. Chiudere e aprire il progetto dal recente
Lo faccio sempre perché richiede molto meno tempo di Rebuild
/ Make
project.
- Chiudi progetto da File> Chiudi progetto
- Apri di nuovo da recente
Nota che preferisco Chiudi e Apri da recenti perché richiede molto meno tempo rispetto a Ricostruisci / Riavvia IDE .
7. Ricostruire il progetto
Se ancora la tua classe non viene generata. (Qualche volta quando incolliamo il file di layout, allora succede). Quindi ricostruire il progetto da Build> Rebuild
( Non creare o creare progetto ). Genererà la tua classe di associazione dati. ( Rebuild fa Magic per me. )
8. Avere l'ultima versione di Android Studio
Dopo aver aggiornato AS ad Android Studio 3.2 , ho sentito molti bug risolti nella generazione automatica del data binding. Quindi dovresti anche avere l'ultima versione di AS.
Soluzione per <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
Di solito, quando mettiamo una variabile nel layout, ne crea un getter e setter. E possiamo usare binding.setItem(item);
e binding.getItem();
, ma se non riesci a vedere questi metodi, leggi le informazioni seguenti.
1. Chiudere e aprire il progetto dal recente
Se hai creato una variabile di dati - <variable
nel tuo layout e non mostra il suo setter e getter nella classe di data binding, quindi Chiudi e Apri da Recenti il tuo progetto.
2. Pulisci il progetto dopo aver cambiato il tipo
Se hai cambiato il tipo di alcuni <variable
nel tuo layout e il tipo di getter setter non cambia, allora Clean project ( Build> Clean Project
)
Parole finali
Infine, se la tua classe vincolante non viene ancora generata, allora abbiamo la nostra arma più potente. - Riavvia Android Studio: D
- Per prima cosa, prova a riavviare , questo genera sempre variabili del mio layout di associazione dopo il riavvio.
- Se non funziona, Invalidate Cache & Restart .
Questo è tutto ciò che faccio per risolvere i miei errori di associazione dei dati. Se riscontri ulteriori problemi, puoi commentare qui.
dataBinding.enabled
nel tuo build.gradle?