传递 LiveData<?> 而不是 ViewModel 时数据绑定不更新



我使用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

相关内容

  • 没有找到相关文章

最新更新