Patrzę na nową wtyczkę Data Binding dla Androida i próbuję zintegrować ją w projekcie.Nie można odwoływać się do pól klasy obserwowalnej z layoutu xml
Podczas czytania o tworzeniu obserwowalnych obiektów, ja spotkałem się z dokumentacją ObservableFields który polega na wykorzystaniu samodzielne obserwowalne obiekty przykład z dokumentacją:
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();
}
Przede fragmencie byłaby wymiana:
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);
}
}
Co oznacza znacznie mniej kodu; Jednak przy użyciu obserwowalnych Pola i odniesienie następnie z układu XML, takich jak:
<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>
ja dostaję ten błąd:
../../databinding/ActivityMainBinding.java
Error:(127, 20) error: cannot find symbol variable lastName
I to nie jest gadatliwy w ogóle; Nie używanie ObservableFields działa jak urok.
Każdy obliczu tego problemu? Myśli?
Opublikuj xml dla układu, proszę? – fakataha
@atamakosi tutaj idziemy! –
Czy w pierwszym przypadku musimy dodać rozszerzenia "BaseObservable"? – Debanjan