Android数据绑定和viewmodel无法正常工作

时间:2017-12-11 09:21:36

标签: android data-binding viewmodel android-databinding

我有一个ViewModel类,以及一个Model类。

class WorksheetViewModel {

    private Worksheet worksheet;

    public Worksheet getWorksheet() {
        return worksheet;
    }

    public void setWorksheet(Worksheet worksheet) {
        this.worksheet = worksheet;
        if (worksheet != null) showButtons();

        Logger.E(worksheet.getShort_text());
    }

这是在这里工作:Logger.E(worksheet.getShort_text());

和我的xml

<import type="android.view.View" />

<variable
    name="viewModel"
    type="viewmodels.WorksheetViewModel" />

...

和带有以下内容的textview:

android:text="@{viewModel.worksheet.short_text + `?`}"

我的问题是,viewModel.worksheet.short_text总是为null。为什么呢?

binding.setViewModel(new WorksheetViewModel());
binding.executePendingBindings();

我也拥有所有

Worksheet extends BaseObservable

  @Bindable
    public String getShort_text() {
        return short_text;
    }

在我的工作表中

2 个答案:

答案 0 :(得分:2)

问题是你只是在绑定binding.setViewModel(new WorksheetViewModel());中设置ViewModel,但WorksheerViewModel也有Worksheet个对象,它是空白的。

所以这应该是

WorksheetViewModel viewModel = new WorksheetViewModel();
viewModel.setWorksheet(new WorkSheet('short text value'))
binding.setViewModel(viewModel);

答案 1 :(得分:0)

如果任何人在binding.setViewmodel()中遇到错误 它由binding.setViewmodel()解析,在setViewmodel中,Viewmodel是在布局中给出的变量名。

例如

<data>
     <variable
        name="userviewmodel"
        type="com.example.mvvmtest.viewmodel.LoginViewModel" />
</data>

比使用binding.setUserviewmodel()