Объединение нескольких LiveData в Android

Для того, чтобы объединить несколько LiveData необходимо использовать класс MediatorLiveData. Данный класс умеет подписываться на обновления других LiveData. Для этого необходимо вызвать метод MediatorLiveData.addSource(). Он принимает в себя два аргумента: 1) Сама LiveData, на которую нужно подписаться 2) Observer, который будет вызываться при изменении элемента в этой LiveData.

Вот пример того, как можно объединить две LifeData:

val firstLiveData: LiveData<Any> = MutableLiveData()
val secondLiveData: LiveData<Any> = MutableLiveData()

val mediatorLiveData: MediatorLiveData<Any> = MediatorLiveData();
mediatorLiveData.addSource(firstLiveData) { value -> mediatorLiveData.value = value }
mediatorLiveData.addSource(secondLiveData) { value -> mediatorLiveData.value = value }

В данном случае MediatorLiveData будет вызывать колбэк observe(), каждый раз, когда будут изменяться данные в этих любой из этих двух LifeData.

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *