Android MVVM, можете ли вы наблюдать LiveData внутри ViewModel с другим объектом LiveData?

В моем приложении я использую эту ViewModel:

class MainViewModel : ViewModel(){
    val hasMessages = MutableLiveData<Boolean>()
    val messages = MutableLiveData<List<Message>>()

}

У меня есть код, подключенный так, что если у пользователя действительно есть сообщения, список будет заполнен, а логическое значение будет обновлено, что кажется излишним

это две разные переменные, потому что, когда для hasMessages установлено значение true, пользователь может видеть кнопку на своей панели инструментов, и когда они нажимают ее, они переходят к фрагменту, который показывает сообщения, чтобы они могли их видеть

есть ли способ настроить hasMessages, чтобы он стал LiveData, полученным из списка сообщений?

что-то вроде AsyncSubject RxJava будет работать в этом случае, но я не могу понять, как это сделать

0
0
314
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать Transformations.map()

      val messages = MutableLiveData<List<Message>>()

      val hasMessages: LiveData<Boolean> = Transformations.map(messages) {
         it.isNotEmpty()
      }

Другие вопросы по теме