首页 > 解决方案 > RecyclerView with RoomDatabase an ViewModel

问题描述

I'm showing my recycler view like this:

   parrafoLeyViewModel.allParrafosLey.observe(this, Observer {  

    recyclerview_lectura_ley.layoutManager = LinearLayoutManager(this)
    adapterListar = AdapterListarLey(this, it, this)
    recyclerview_lectura_ley.adapter = adapterListar

   })

So when I insert data into the RoomDatabase my recyclerview restarts and goes back to the start

    GlobalScope.launch {
                    db.parrafoLeyDao().updateComentarioLey(
                        ComentarioLey(
                            idParrfo,
                            spTipoComentario.selectedItem.toString(),
                            etInserteComentario.text.toString()
                        )
                    )
                }

What I want is that when I insert the data it remains in the same position. I am using ViewModel

标签: androidkotlinandroid-recyclerviewandroid-roomandroid-viewmodel

解决方案


您没有正确地将数据传递给Recycler View

请确保您的数据源包含在 a 中Live Data ,然后将此实时数据传递给您的 Recycler View Adapter。

这种方式Recycler View只会重新绘制更改的项目,而不是整个列表。因为 Recycler View 可以很好地处理实时数据。

应排除任何Recycler View会导致列表重新绘制的方法。例如notifyDataSetChanged()方法。

而是打电话submitList()

最后请阅读以下文档:

  1. 回收商查看样品

  2. RecyclerView.State


推荐阅读