Как привязать данные жилатата (андроид) - PullRequest
0 голосов
/ 05 июля 2019

Сегодня у меня есть вопрос о mvvm и привязке данных на Android,

Я пытаюсь связать свойства объекта при просмотре.

У меня есть Объект (Модель) с некоторыми свойствами, например:

public String name;
public String title;
public int value;

У меня есть ViewModel с liveata, как это:

MutableLiveData<Object> _obj = new MutableLiveData<>();
public LiveData<Object> obj = _obj;

И, наконец, у меня такой взгляд:

<layout>
    <data>
        <variable
            name="viewModel">
            type="com.sample.app.viewmodels.MainViewModel" />
    </data>
    <LinearLayout
        ... >
        <TextView
            android:text:="@{viewModel.obj.name}"
            .../>
    </LinearLayout>
</layout>

Я видел, что мы можем сделать это в видео от «Разработчиков Android» о «LiveData»: https://youtu.be/OMcDk2_4LSk?t=102

Она говорит, что это возможно в Android Studio версии 3.1+. Но это не работает для меня.

1 Ответ

1 голос
/ 21 июля 2019

Чтобы это работало, ваш класс модели должен расширять класс BaseObservable из библиотеки привязки данных.И вы должны вызывать notifyChange() для каждого метода установки следующим образом:

public class Object extends BaseObservable {
    public String name;
    public String title;
    public int value;

    public void setName(String name) {
        this.name = name;
        notifyChange();
    }

    public void setTitle(String title) {
        this.title = title;
        notifyChange();
    }

    public void setValue(int value) {
        this.value = value;
        notifyChange();
    }
}
...