0

I was trying to just make the RecyclerView move to last position when the fragment is started, but cant find a solution. The code below works just fine when a new "Pagina" in inserted in database, it moves to last position. But, if I close and reopen it goes back to the top. So, how to make the smoothscroll work when the fragment is created?

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    appDatabase = AppDatabase.getDatabase(requireContext())

    val smoothScroller = object : LinearSmoothScroller(context) {
        override fun getVerticalSnapPreference(): Int = SNAP_TO_START
    }
    viewModelo = ViewModelProviders.of(this).get(ViewModelo::class.java)
    // Create the observer which updates the UI.
    val listPaginas = Observer <List<Pagina>> {
        // Update the UI, in this case, a TextView.

        recyclerViewAdapter?.addItens(it)  
            if (it.size < 1) {               
            smoothScroller.targetPosition = it.size
            } else {
               smoothScroller.targetPosition = it.size-1
        }      

        recyclerView?.layoutManager?.startSmoothScroll(smoothScroller)
    }

    viewModelo?.todasPaginas()?.observe(this, listPaginas)

}
Alex Pinheiro
  • 61
  • 1
  • 7

1 Answers1

1

Try below changes, it worked!

LinearLayoutManager manager = new LinearLayoutManager(Application.Context);
manager.setStackFromEnd(true); 
mRecyclerView.SetLayoutManager(manager);
Mayur Dabhi
  • 3,607
  • 2
  • 14
  • 25