Android 数据绑定和视图模型不工作

Android databinding and viewmodel not working

我有一个 ViewModel class,还有一个模型 class。

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" />

..

和一个文本视图:

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

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

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

我还有所有

Worksheet extends BaseObservable

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

在我的工作表中

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

所以这应该是

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

如果有人在 binding.setViewmodel() 中出错 它通过binding.setViewmodel()解析,在setViewmodel中,Viewmodel是布局中给出的变量名。

例如

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

比使用,binding.setUserviewmodel()