视图模型中字段的推荐模式似乎是:
val selected = MutableLiveData<Item>()
fun select(item: Item) {
selected.value = item
}(顺便说一句,selected字段不是私有字段是正确的吗?)
但是,如果我不需要订阅ViewModel字段中的更改,该怎么办?我只需要被动地把这个值拉进另一个片段。
我的项目细节:
ViewModel:
private var amount = 0
fun setAmount(value: Int) { amount = value}
fun getAmount() = amountFragment1:
bnd.button10.setOnClickListener { viewModel.setAmount(10) }Fragment2:
if(viewModel.getAmount() < 20) { bnd.textView.text = "less than 20" }这是一个有效的方法吗?还是有个更好的?还是应该只使用LiveData或Flow?
也许我该用SavedStateHandle?它在ViewModel中可以注射吗?
发布于 2021-01-13 10:45:19
为了回答你的问题,
not ,并不强制在ViewModel中始终使用LiveData,它只是一种可观察的模式,可以将数据中的更新通知调用者。如果您有一些不会经常更改的内容,并且可以通过它的实例访问。您可以完全忽略将其包装在LiveData中。无论如何,ViewModel实例将被保留,其中的值也会被保留。
对于私有字段,MutableLiveData不应该在类之外公开,因为数据流总是来自VM ->视图,这是MVVM模式的优点。
private val selected = MutableLiveData<Item>()
val selectedLiveData : LiveData<Item>
get() = selected
fun select(item: Item) {
selected.value = item
}https://stackoverflow.com/questions/65700110
复制相似问题