我有一个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;
}
在我的工作表中
答案 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()