如何对livedata对象进行数据绑定(android) [英] How to databind livedata object (android)

查看:183
本文介绍了如何对livedata对象进行数据绑定(android)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

今天,我对android上的mvvm和数据绑定有一些疑问,

Today I've some question about mvvm and databinding on android,

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

I'm trying to bind object properties on view.

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

I've an Object (Model) with some properties, by example :

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

我有一个带有livedata的ViewModel:

I've a ViewModel with livedata like this :

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

最后,我有一个这样的观点:

And, at last, I've a view like this :

<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

I saw that we can do that in a video from "Android Developers" about "LiveData" : https://youtu.be/OMcDk2_4LSk?t=102

她说,在3.1及更高版本的Android Studio中,这是可能的.但这对我不起作用.

She says that its possible in Android studio on 3.1+ versions. But this is not working for me.

推荐答案

为此,您的模型类必须从数据绑定库扩展 BaseObservable 类.而且您必须在每个setter方法上调用 notifyChange(),如下所示:

For this to work, your model class must extend BaseObservable class from databinding library. And you have to call notifyChange() on each setter method like this:

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();
    }
}

这篇关于如何对livedata对象进行数据绑定(android)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆