我有一个保存用户喜欢的地址的AddressesViewModel和另一个保存搜索地址的SearchViewModel。 当用户搜索地址时,我必须通过检查收藏夹数组来检查该地址是否是收藏夹。 正确的方法是什么?
我已经尝试从SearchViewModel订阅AddressesViewModel,但我正在寻找其他选项,因为它在这些视图模型之间创建了太多的依赖关系。
如果我正确理解这个问题,另一种选择。假设您首先拥有以下内容:
ViewModelChild(constructor etc) : ViewModelParent(){
// you can create a var/val to observe a variable in viewmodel parent.
// upon observation of
//this you can change other variables assigned here.
}
两个 ViewModels 附加到同一个生命周期所有者。 例如,您有一个名为 MainActivity
的活动,两个名为 AddressesViewModel
和 SearchViewModel
的 ViewModels,您需要获取一个名为 address
的变量,以便SearchViewModel
AddressesViewModel
class MyActivity: AppCompactAvtivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
.
.
// Attach the ViewModels
val addressViewModel = ViewModelProviders.of(this).get(AddressesViewModel::class.java)
val searchViewModel = ViewModelProviders.of(this).get(SearchViewModel::class.java)
// Listen to address which is in SearchViewModel
searchViewModel.address.observe(this, Observer { address ->
// Send the variable to AddressesViewModel using a public method
val favOrNot addressViewModel.isAddressFavourite(address)
// or
addressViewModel.favouriteAddress = address
})
}
}
希望这能回答你的问题。