двусторонняя привязка данных - PullRequest
0 голосов
/ 21 октября 2018

У меня проблема с двусторонней связью данных.Вот мои классы:

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"), мой интерфейс не меняется.Я использовал 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}"

1 Ответ

0 голосов
/ 22 октября 2018

Хорошо, я решил проблему.Я помещаю notifyPropertyChanged (BR.name) в установщик адресов и перестраиваю проект.Без последнего не получится.

...