我对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.")
}
}
}
}这很有趣,因为updating/inserting可以工作。
编辑:我想指出我在这里发布的代码,在ViewModel的类中工作。
发布于 2019-01-19 13:26:53
我不确定MediatorLiveData实现的Kotlin版本,但在Java中,您需要实现onChanged()来获取数据。您可能需要引用此线程。希望这能帮上忙!
发布于 2019-02-07 19:05:35
我不知道你为什么要在其他地方使用MediatorLiveData。实际上,您可以使用MutableLiveData并在任何您想要的位置观察它。
查看我的MVVM实现,看看它是如何工作的。
https://stackoverflow.com/questions/54267387
复制相似问题