双向数据绑定
two-way databinding
我对双向数据绑定有疑问。这是我的 类:
public class User extends BaseObservable {
private String name;
private String surname;
private Address address;
public User() {
}
public User(String name, String surname) {
this.name = name;
this.surname = surname;
}
@Bindable
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
notifyPropertyChanged(BR.address);
}
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyPropertyChanged(BR.name);
}
@Bindable
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
notifyPropertyChanged(BR.surname);
}
}
public class Address extends BaseObservable {
private String name;
public Address(String name) {
this.name = name;
}
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我正在尝试绑定 xml 文件中的用户,但我也想绑定地址名称。不幸的是,当我使用 address.setName("abc") 时,我的 UI 没有改变。我在地址 setter 中使用了 notifyPropertyChanged(BR.address) 但它没有帮助。有可能那样做吗?以下是我的 xml 文件的片段:
<data>
<variable name="user" type="com.rolnik.test.User"/>
</data>
android:text="@={user.name}"
android:text="@={user.surname}"
android:text="@={user.address.name}"
好的,我解决了问题。我将 notifyPropertyChanged(BR.name) 放在地址 setter 中并重建项目。没有最后一个它不起作用。
我对双向数据绑定有疑问。这是我的 类:
public class User extends BaseObservable {
private String name;
private String surname;
private Address address;
public User() {
}
public User(String name, String surname) {
this.name = name;
this.surname = surname;
}
@Bindable
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
notifyPropertyChanged(BR.address);
}
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyPropertyChanged(BR.name);
}
@Bindable
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
notifyPropertyChanged(BR.surname);
}
}
public class Address extends BaseObservable {
private String name;
public Address(String name) {
this.name = name;
}
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我正在尝试绑定 xml 文件中的用户,但我也想绑定地址名称。不幸的是,当我使用 address.setName("abc") 时,我的 UI 没有改变。我在地址 setter 中使用了 notifyPropertyChanged(BR.address) 但它没有帮助。有可能那样做吗?以下是我的 xml 文件的片段:
<data>
<variable name="user" type="com.rolnik.test.User"/>
</data>
android:text="@={user.name}"
android:text="@={user.surname}"
android:text="@={user.address.name}"
好的,我解决了问题。我将 notifyPropertyChanged(BR.name) 放在地址 setter 中并重建项目。没有最后一个它不起作用。