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()
我有一个 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()