Sto guardando il nuovo plug-in Data Binding per Android e sto provando ad integrarlo in un progetto.Impossibile fare riferimento ai campi Classe osservabile dal layout xml
Durante la lettura sulla creazione di oggetti osservabili, ho incontrato la documentazione ObservableFields che comporta l'uso di self-contained oggetti osservabili esempio dalla documentazione:
public class User extends BaseObservable {
public final ObservableField<String> firstName =
new ObservableField<>();
public final ObservableField<String> lastName =
new ObservableField<>();
public final ObservableInt age = new ObservableInt();
}
Sopra frammento sarebbe una sostituzione:
private static class User extends BaseObservable {
private String firstName;
private String lastName;
@Bindable
public String getFirstName() {
return this.firstName;
}
@Bindable
public String getFirstName() {
return this.lastName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
notifyPropertyChanged(BR.firstName);
}
public void setLastName(String lastName) {
this.lastName = lastName;
notifyPropertyChanged(BR.lastName);
}
}
Quale è significativamente meno codice; Ma quando si utilizzano campi osservabile e di riferimento poi dal layout XML come ad esempio:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.example.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"
android:id="@+id/lastName"/>
</LinearLayout>
</layout>
sto ottenendo questo errore:
../../databinding/ActivityMainBinding.java
Error:(127, 20) error: cannot find symbol variable lastName
E non è prolisso a tutti; Non usare ObservableFields funziona come un incantesimo.
Chiunque di fronte a questo problema? Pensieri?
Invia l'xml per il layout per favore? – fakataha
@atamakosi qui andiamo! –
Nel primo caso dobbiamo aggiungere "BaseObservable"? – Debanjan