gpt4 book ai didi

android - ViewModel中的LiveData类型不匹配

转载 作者:行者123 更新时间:2023-12-02 12:55:13 25 4
gpt4 key购买 nike

我正在关注有关LiveData / Room / Persistence和存储库体系结构的UDACITY的Android教程之一。
将所有代码粘贴在一起后,我遇到了(我认为这是一个非常普遍的问题)类型不匹配异常。
在类(class)示例中,创建了一个带有成员视频(即LiveData)的VideosRepository:

class VideosRepository(private val database: VideosDatabase) {

/**
* A playlist of videos that can be shown on the screen.
*/
val videos: LiveData<List<Video>> =
Transformations.map(database.videoDao.getVideos()) {
it.asDomainModel()
}
在模型中,我介绍了_video的MutableLiveData
val playlist = videosRepository.videos //works fine

// added by me
private val _video = MutableLiveData<List<Video>>()
val video: LiveData<List<Video>> = _video
当我尝试访问LiveData时,这就是类型不匹配的地方。
fun sample(){
_video.value = videosRepository.videos //does not work and throws a Type mismatch.
//Required: List<Video> Found: LiveData<List<Video>>
}
如果我尝试将所有LiveData填充到ViewModel中(意味着,只有ViewModel将具有LiveData对象声明),然后将所有LiveData转换为纯列表和诸如以下的函数
fun getVideos(): List<Video>{
return database.videoDao.getVideo()
}
然后,我将得到 无法访问主线程上的数据库,因为它可能长时间锁定UI。我很清楚。因此,如果是这种情况,那么LiveData是唯一的方法。
但是我如何摆脱类型不匹配的问题。
PS。我了解OOP和Java的概念,但从未有过深入的动手经验,因此请耐心等待。

最佳答案

_video.value的输入是List<Video>,但是您分配的videosRepository.videosLiveData<List<Video>>您必须从LiveData获取List<Video>:

_video.value = videosRepository.videos.value

关于android - ViewModel中的LiveData类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64381875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com