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