Как использовать данные из одной ViewModel в другой ViewModel - PullRequest
0 голосов
/ 07 января 2019

У меня есть AddressesViewModel, которая содержит любимые адреса пользователя, и другая SearchViewModel, которая содержит искомые адреса. когда пользователь искал адрес, я должен проверить, является ли этот адрес любимым или нет, проверив массив избранных. Как правильно это сделать?

Я уже пытался подписаться на AddressesViewModel из SearchViewModel, но я ищу другие варианты, так как это создает слишком большую зависимость между этими моделями представления.

1 Ответ

0 голосов
/ 17 января 2019

Вам нужно будет прикрепить две модели ViewMode к одному владельцу жизненного цикла. Например, у вас есть действие с именем MainActivity, две модели представления с именами AddressesViewModel и SearchViewModel, и вам нужно получить переменную с именем 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
        })
    }
}

Надеюсь, что это отвечает на ваш вопрос.

...