如何更新房间中的行?(请先阅读)



所以我通过viewmodel在recyclerview中观察我的房间数据库。为了更新一行,我在活动中对存储库对象调用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中的行。

LiveDatasetDatapostData方法的用例是。。好以更新LiveData对象。

例如,每当您以影响LiveData对象的方式更新DB时,Room都会使用postData()来更新它最初返回的LiveData对象(当您调用getAllNotes()时(。

因为Room为您调用postData(),所以您不需要。

但是,如果您要在LiveData对象内的viewmodel(而不是Room(中直接保留一些值,并且您希望在用户单击视图中的某个内容时对其进行更改,则必须自己调用setData/postData

相关内容

  • 没有找到相关文章

最新更新