Объединение нескольких 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.
Бесплатные Telegram-боты для обучения
Практика с проверкой кода и помощью ИИ-ментора
AndroidSprint AI Mentor
Проверяет Pull Request'ы в GitHub, проводит тестовые собеседования с голосом и таймером, помогает разбираться с кодом 24/7
Попробовать ИИ-ментора →KotlinSprint Bot
22 урока Kotlin, 220 тестов, 120 практических задач с код-ревью
Начать обучение Kotlin →