0

今天我有一些关于 mvvm 和 android 上的数据绑定的问题,

我正在尝试在视图上绑定对象属性。

我有一个具有一些属性的对象(模型),例如:

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

我有一个带有 livedata 的 ViewModel,如下所示:

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

她说它可以在 3.1+ 版本的 Android 工作室中使用。但这对我不起作用。

4

1 回答 1

2

为此,您的模型类必须BaseObservable从数据绑定库扩展类。你必须notifyChange()像这样调用每个 setter 方法:

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();
    }
}
于 2019-07-21T16:21:20.947 回答