如何解决如何在房间里更新一行? 请先阅读
因此,我通过viewmodel在recyclerview中观察了我的房间db。要更新行,我在活动中对存储库对象调用update方法。我做对了吗?因为这是我在教程中看到的。我的问题是,如果我们正在使用存储库对象进行更新,创建和查看模型以读取数据,那么livedata的setdata和postdata方法的用例是什么?还有如何更新整个表(覆盖)?
观察
noteViewModel.getAllNotes().observe(this,Observer<List<Note>> { notes ->
notes?.let {
notesList = notes as ArrayList<Note>
notesAdapter = NotesAdapter(notes,this@MainActivity)
recyclerView.adapter = notesAdapter
notesAdapter!!.notifyDataSetChanged()
}
})
更新
NoteDatabase.getInstance(this@MainActivity).noteDao().updateNote(
notechecked.also { it.done = value }
解决方法
您的代码很好。这正是您应该观察和更新Room
中的行的方式。
{。{1}}的{{1}}和setData
方法的用例是..很好..以更新LiveData对象。
例如,只要您以某种影响数据库的方式进行更新,postData
就会使用LiveData
更新其最初返回的Room
对象(当您调用postData()
时)您的LiveData
对象。
因为getAllNotes()
会为您呼叫LiveData
,所以您不需要这样做。
但是,如果您要直接在Room
对象内部的postData()
中(而不是viewmodel
)中保存一些值,并且您想在用户单击视图中的某些内容,则必须自己致电Room
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。