【问题标题】:Type Mismatch required List found LiveData类型不匹配所需列表找到 LiveData
【发布时间】: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


【解决方案1】:

_auth.value的数据类型为List&lt;AuthModel&gt;

authRepository.login(username, password)的数据类型为LiveData&lt;List&lt;AuthModel&gt;&gt;

它们是不同的。

试试:

_auth.value = authRepository.login(username, password).value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2021-01-30
    • 2019-04-30
    • 2019-08-22
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多