如何在另一个视图模型中使用来自一个视图模型的数据



我有一个保存用户喜欢的地址的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 的活动,两个名为 AddressesViewModelSearchViewModel 的 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
        })
    }
}

希望这能回答你的问题。

相关内容

  • 没有找到相关文章

最新更新