Почему MediatorLiveData не отслеживает два разных источника? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть два запроса по комнатам.

@Query("Select * from accountGroup")
fun getAll(): LiveData<List<AccountGroupDto>>


@Query("Select * from accounts")
fun getAll(): LiveData<List<AccountDto>>

С этими двумя списками результатов я хочу создать новый список ShareItem

data class ShareItem
(val accountId: Int, val accountGroupId: Int, val isGroup: Boolean)

Объединенный список, в котором я хочу наблюдать за ним. моя деятельность. Итак, у меня есть репозиторий, который реализует MediatorLiveData, который добавляет два источника, и я хочу, чтобы каждый элемент трансформировался (создавая ShareItem) и добавлял его в mutableLiveData и передавал его в viewModel.

override fun getShareItems(): LiveData<List<Int>> {
        val shareItems = MutableLiveData<List<ShareItem>>()
        val liveDataMerger = MediatorLiveData<List<Int>>()
                
        liveDataMerger.addSource(accountGroupsDao.getAll()) {  groups ->
            // Transform each element in ShareItem ??
            println("Group log")
        }
        liveDataMerger.addSource(accountsDao.getAll()) { accounts ->
            // Transform each element in ShareItem ??
            println("Account log")
        }
        
        return shareItems
    }

Однако я никогда не вижу System.out в консоли. Что мне не хватает, поскольку база данных явно заполнена данными?

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Однако я никогда не вижу System.out в консоли. Что мне не хватает, так как база данных явно заполнена данными?

Есть ли Observer? LiveData начинает работать только при наличии хотя бы одного Observer.

0 голосов
/ 09 июля 2020

Проблема решена. Я никогда не был зарегистрирован в качестве наблюдателя Livedata.

...