使用协程时发生类型不匹配错误



我的viewModel 中有以下内容

fun getUsernamePassword(inputUserName:String, inputPassword:String):List<User> = viewModelScope.launch(Dispatchers.IO) {
return repository.getUsernamePassword(inputUserName, inputPassword)
}

然而,我收到一个错误,说Type mismatch. Required: List<User> Found:Job我能做些什么来解决这个错误。最终目标是让函数在非黑线程上运行,并从MAIN thread中运行一部分,以避免冲突和错误。

viewModelScope.launch返回一个后台Job,您可以在其中执行实际的回购操作。在这种情况下,您可能需要一个Observable或LiveData来存储UI需要操作的用户列表。

你可以在你的ViewModel:中做这样的事情

val userList = MutableLiveData<List<User>>()
fun getUsernamePassword(inputUserName:String, inputPassword:String) = viewModelScope.launch(Dispatchers.IO) {
val list = repository.getUsernamePassword(inputUserName, inputPassword)
userList.postValue(list)
}

在您的视图中,您需要通过以下方式观察ViewModel的userList的变化:

viewModel.userList.observe(viewLifecycleOwner, {
// Place UI changes here
})

最新更新