首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何绑定livedata对象(android)

如何绑定livedata对象(android)
EN

Stack Overflow用户
提问于 2019-07-06 04:03:36
回答 1查看 87关注 0票数 0

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

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

我有一个对象(Model),它有一些属性,例如:

代码语言:javascript
复制
public String name;
public String title;
public int value;

我有一个带有livedata的ViewModel,像这样:

代码语言:javascript
复制
MutableLiveData<Object> _obj = new MutableLiveData<>();
public LiveData<Object> obj = _obj;

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

代码语言:javascript
复制
<layout>
    <data>
        <variable
            name="viewModel">
            type="com.sample.app.viewmodels.MainViewModel" />
    </data>
    <LinearLayout
        ... >
        <TextView
            android:text:="@{viewModel.obj.name}"
            .../>
    </LinearLayout>
</layout>

我在“安卓开发者”关于"LiveData“的视频中看到我们可以做到这一点:https://youtu.be/OMcDk2_4LSk?t=102

她说,在安卓工作室的3.1+版本中,这是可能的。但这对我不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 00:21:21

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

代码语言:javascript
复制
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();
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56908707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档