没有ViewModel,MediatorLiveData无法正常工作

时间:2019-01-19 13:04:14

标签: android kotlin android-livedata

我对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 :(得分:0)

我不确定MediatorLiveData实现的Kotlin版本,但是在Java版本中,您需要实现onChanged()才能获取数据。您可能要引用此线程。希望这会有所帮助!

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

答案 1 :(得分:0)

我不确定您为什么必须在其他地方使用MediatorLiveData。实际上,您可以使用MutableLiveData并在每个您想要的地方观察它。

检查我的MVVM实现,以了解其工作原理。

Kotlin-MVVM-Demo