RecyclerView片段中有一个列表。充满Room通过ViewModel。
如果我在数据库中添加一个条目:
@Insert
fun insert(item: Item);
然后代码片段接收更改并更新适配器:
myViewModel.allItems.observe(viewLifecycleOwner, Observer { myItemList ->
myItemList?.let {
Log.d("TAG", "DF myItemList.size = " + myItemList.size)
adapter.setItemList(it)
}
})
但是如果我尝试更新一些记录,我不会得到任何更新。
@Update(onConflict = OnConflictStrategy.REPLACE)
fun update(item: Item)
仅当我将新元素插入基础时,片段中的日志才有效。
我无法理解我没有连接什么。
fun update()显然和的实现存在差异fun insert。但是我还没有找到关于这个问题的任何信息。
问题原来是在传递一个对象时,
fun update(item: Item)需要传递一个值PrimaryKey。由于是按值PrimaryKey搜索数据库中需要更改的字符串。否则,将找不到该字符串。
事实证明,
AndroidStudio在编译期间或直接执行查询时都不会引发错误。