我使用DataBinding
,在我的ViewModel
我有一个LiveData<MyItem>
对象,我想绑定到我的布局。项目有一个这样的属性:
@Bindable
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
notifyPropertyChanged(BR.aMOUNT);
}
问题是,如果我在Fragment
中表示:
mDataBinding.setItem(mViewModel)
在布局中我有:
<Button
...
android:enabled="@{viewModel.item.amount == 0}/>
当属性amounttfromItem发生变化时,它就会启用或禁用按钮。好的。当我直接传递Item
实例而不是传递viewModel实例时,问题就出现了:
mDataBinding.setItem(mViewModel.getItem().getValue())
and in layout:
<Button
...
android:enabled="@{item.amount == 0}/>
的问题是,它启用/禁用按钮的第一次正确,但它不改变其状态时,项目的数量属性的变化。你知道为什么会这样吗?
可以在viewModel之前设置binding.lifecycleOwner = this
吗?另外,如果使用片段,请使用lifeCycleOwner
而不是this