MediatorLiveData не работает без ViewModel - PullRequest
0 голосов
/ 19 января 2019

У меня проблема с MediatorLiveData. Я хочу получить данные из базы данных, в классе, который не является ViewModel. Я хотел бы отметить, что методы, которые загружают данные, работают во ViewModel, но когда я хочу вызвать их в другом классе, это не работает. Это код:

class MyReceiver: BroadcastReceiver() {

@Inject
lateinit var jobsRepository: jobsRepository


private val _jobStatusDone = MediatorLiveData<Boolean>()
val jobStatusDone: LiveData<Boolean>
    get() = _jobStatusDone

private val _counterparties = MediatorLiveData<List<Counterparty>>()


override fun onReceive(context: Context?, intent: Intent?) {
    AndroidInjection.inject(this, context)

        val source = jobsRepository.getFulljobs()
        _jobStatusDone.addSource(source) {
            System.out.println("IT NEVER REACHES THIS PLACE.")
        }
    }
}

}

Это интересно, потому что обновление / вставка работает.

РЕДАКТИРОВАТЬ: Я хотел бы указать, что код, который я разместил здесь, работает в классах ViewModel.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Я не уверен, почему вы должны использовать MediatorLiveData в других местах.На самом деле вы можете использовать MutableLiveData и наблюдать его там, где вы хотите.

Ознакомьтесь с моей реализацией MVVM, чтобы увидеть, как она работает.

Kotlin-MVVM-Demo

0 голосов
/ 19 января 2019

Я не уверен в Kotlin-версии реализации MediatorLiveData, но в Java-версии вам потребуется реализовать onChanged () для получения данных. Вы можете ссылаться на эту тему. Надеюсь, это поможет!

https://stackoverflow.com/a/44471378/1992013

...