Android 来自具有Kotlin协程和流程的房间的连锁请求

Android 来自具有Kotlin协程和流程的房间的连锁请求,android,kotlin,kotlin-coroutines,flow,Android,Kotlin,Kotlin Coroutines,Flow,我想为不同的流类型请求两次,然后将结果添加到单个实时数据中进行观察。 但只得到第一个结果 ParentModel是Notes和FolderWithNotes数据类的父类 我想在我的recyclerView中显示我在我的RecyclerAdapter中处理不同绑定的所有Notes和Folderwithnotes。这是肯定的,因为第一次流收集将阻止等待数据库返回的数据。您需要打开两个子协程来完成流的收集,而不是将它们全部放在一个子协程中 编辑 使用异步进行并发。wait获取future对象,合并并

我想为不同的流类型请求两次,然后将结果添加到单个实时数据中进行观察。 但只得到第一个结果

ParentModel是Notes和FolderWithNotes数据类的父类


我想在我的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)
    })