Android 来自具有Kotlin协程和流程的房间的连锁请求
我想为不同的流类型请求两次,然后将结果添加到单个实时数据中进行观察。 但只得到第一个结果 ParentModel是Notes和FolderWithNotes数据类的父类Android 来自具有Kotlin协程和流程的房间的连锁请求,android,kotlin,kotlin-coroutines,flow,Android,Kotlin,Kotlin Coroutines,Flow,我想为不同的流类型请求两次,然后将结果添加到单个实时数据中进行观察。 但只得到第一个结果 ParentModel是Notes和FolderWithNotes数据类的父类 我想在我的recyclerView中显示我在我的RecyclerAdapter中处理不同绑定的所有Notes和Folderwithnotes。这是肯定的,因为第一次流收集将阻止等待数据库返回的数据。您需要打开两个子协程来完成流的收集,而不是将它们全部放在一个子协程中 编辑 使用异步进行并发。wait获取future对象,合并并
我想在我的recyclerView中显示我在我的RecyclerAdapter中处理不同绑定的所有Notes和Folderwithnotes。这是肯定的,因为第一次流收集将阻止等待数据库返回的数据。您需要打开两个子协程来完成流的收集,而不是将它们全部放在一个子协程中 编辑
使用异步进行并发。wait获取future对象,合并并发结果并将其发送到LiveData
fun getAllItems(){
viewModelScope.launch{
val folds=viewModelScope.async{
noteRepository.getFoldersWithNotes()文件
}
val notes=viewModelScope.async{
noteRepository.getAllNotes()
.地图{
databaseNoteMapper.mapFromEntityList(it)
}
}
allItems.postValue(folds.await()+notes.await())
}
}
您可以再试一次。
val allItems: MutableLiveData<List<ParentModel>> = MutableLiveData()
fun getAllItems() {
viewModelScope.launch {
noteRepository.getFoldersWithNotes()
.collect {
allItems.postValue(it)
}
noteRepository.getAllNotes()
.map {
databaseNoteMapper.mapFromEntityList(it)
}
.collect {
allItems.postValue(it)
}
}
}
viewModel.allItems.observe(viewLifecycleOwner, {
adapter.setItems(it)
})