我对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的类中使用。
答案 0 :(得分:0)
我不确定MediatorLiveData实现的Kotlin版本,但是在Java版本中,您需要实现onChanged()才能获取数据。您可能要引用此线程。希望这会有所帮助!
答案 1 :(得分:0)
我不确定您为什么必须在其他地方使用MediatorLiveData。实际上,您可以使用MutableLiveData并在每个您想要的地方观察它。
检查我的MVVM实现,以了解其工作原理。