У меня вопрос относительно шаблона MVVM с репозиторием.
У меня есть активность, в которой размещены 2 фрагмента. Назовем их FragmentA
и FragmentB
.
Эти 2 фрагмента имеют свои собственные модели просмотра, такие как viewModelA
и viewModelB
.
У меня также есть класс репозитория, который обслуживает только локальные данные. Нет сетевого запроса. Просто MutableList.
FragmentA
и FragmentB
наблюдают за соответствующими viewModel через LiveData.
//FragmentA Observes viewModelA
viewModelA.cartContent.observe(viewLifecycleOwner, Observer { content ->
})
// ViewModelA exposes cartContent
val cartContent: LiveData<MutableList<Item>> = repository.getContent()
// Repository
private val contentRepository = mutableListOf<Item>()
fun getContent() : LiveData<MutableList<Item>> {
val data = MutableLiveData<MutableList<Item>>()
data.value = contentRepository
return data
}
.
.
.
Теперь обе модели viewModel вносят изменения в репозиторий, в котором хранится MutableList. Я хотел бы знать, можно ли наблюдать за изменениями в репозитории, которые делает другой viewModel. Если да, то как?
Чтобы быть более понятным, я хочу, чтобы viewModelA
знал, когда viewModelB
изменяет список в репозитории. Может ли viewModelA
наблюдать за данными в репозитории, чтобы при изменении viewModelB
они распространялись и на viewModelA
?
Я бы предпочел не использовать общую модель просмотра. Я бы также предпочел решить это с помощью наблюдения LiveData, а не с использованием интерфейсов
Спасибо