如何解决LiveData返回空值,即使它包含一个值
我有以下代码:
class AddViewModel(application: Application) : AndroidViewModel(application) {
val readAllData: LiveData<List<DutyDay>>
private val repository: DutyDayRepository
init {
val dutyDayDao = DutyDayDatabase.getDatabase(
application
).dutyDayDao()
repository = DutyDayRepository(dutyDayDao)
readAllData = repository.readAllData
val date = readAllData.value?.get(1)?.date
}
如您所见,readAllData是类型为dutyDay的LiveData列表。 我正在从Room数据库中获取数据,并且该数据库不是空的,我在recyclerView中使用了它,一切正常。
但是,当我尝试从我的readAllData列表的索引1(在代码示例的最后一行)中的dutyDay对象中检索日期时,该变量在调试时包含null,而在数据库中显然不是null,如图所示在recyclerView中? (在示例中不可见)...
我在做什么错了?
感谢您的帮助:-)
解决方法
由于LiveData是生命周期感知组件,因此它只有在观察到数据后才会加载任何数据
因此,当将其加载到recyclerView中时,您将对其进行观察/订阅,因此一旦数据库具有该值,它将更新实时数据,并且您还将在get()调用中接收该值
但是这里发生的是您的get()调用正在寻找您的livedata对象的最后一个值,由于没有被观察,它的值为空
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。