【发布时间】:2021-07-10 15:38:44
【问题描述】:
我在以下方面遇到类型不匹配错误:
class LoginViewModel(application: Application) : AndroidViewModel(application) {
private val authRepository = AuthRepository(database)
private val _auth = MutableLiveData<List<AuthModel>>()
val auth: LiveData<List<AuthModel>>
get() = _auth
private fun apiLogin(username: String, password: String) {
viewModelScope.launch {
try{
**_auth.value = authRepository.login(username, password)**
}
}
}
class AuthRepository(private val database: xdb) {
val auth: LiveData<List<AuthModel>> =
Transformations.map(database.authDao.getAuthInfo()) {
it.asDomainModel()
}
suspend fun login(username: String, password: String): LiveData<List<AuthModel>> {
withContext(Dispatchers.IO) {
val auth = Network.retrofitInstance?.create(AuthService::class.java)
val i = auth?.doLogin(username, password)?.await()
if (i != null) {
database.authDao.insertAuthInfo(*i.asDatabaseModel())
}
}
return auth
}
}
@Dao
interface AuthDao {
@Query("SELECT * FROM auth")
fun getAuthInfo(): LiveData<List<AuthEntities>>
}
为什么此代码返回类型不匹配 _auth.value = authRepository.login(username, password)?
确切的错误信息:
类型不匹配
必填清单?
找到 LiveData
【问题讨论】:
-
试试这个:
_auth = authRepository.login(username, password)
标签: android kotlin android-room repository-pattern android-livedata