Android MVVM, вы можете наблюдать LiveData внутри ViewModel с другим объектом LiveData? - PullRequest
0 голосов
/ 02 мая 2019

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

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

}

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

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

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

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

1 Ответ

0 голосов
/ 02 мая 2019

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

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

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