Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.1k views
in Technique[技术] by (71.8m points)

android - 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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You are not correctly passing the data to Recycler View

Please make sure your Data Source is wrapped inside a Live Data And then pass this live data to your Recycler View Adapter.

This way Recycler View will only re-draw the changed item and not the entire list. Because Recycler View works well with Live Data.

Any method of Recycler View which will cause the list to re-draw should be excluded. for e.g. notifyDataSetChanged() method.

Instead call submitList()

And lastly please go through below documentation:

  1. Recycler View Sample

  2. RecyclerView.State


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...