Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Recyclerview with DiffUtil.ItemCallback doesn't scroll to top?

I do search of items and every time I fetch from server When I search "o" it works and then "ot" it works again and as a result of "o" search I have let's say 20 items and in case "ot" I have 10 items which are part of that 20 items and I do remove t in EditText it shows 20 items only the recyclerview scroll indicator is in the middle Here is my Code for diffUtil

ListAdapter<Asset, SearchAdapter.ViewHolder>(object : DiffUtil.ItemCallback<Asset>() {

    override fun areItemsTheSame(oldItem: Asset, newItem: Asset): Boolean {
        return oldItem.assetId == newItem.assetId && oldItem.originalTitle ==newItem.originalTitle
    }

    override fun areContentsTheSame(oldItem: Asset, newItem: Asset): Boolean {
        return oldItem == newItem
    }

}




  viewModel.searchAssets.observe(viewLifecycleOwner, Observer {
      searchAdapter.submitList(it)
    })

Here you can see the video I have filmed https://drive.google.com/drive/folders/1ia5y9TtL0PSAM1M4hVBILWcdSK1BDyKI?usp=sharing

like image 346
I.S Avatar asked Jun 27 '26 02:06

I.S


1 Answers

I want to answer my own question as I got an answer from Yiğit

submit list has another overload which receives a callback when list applied you can use that one and just call rv.scrollToPosition(0)

Here is my code:

searchAdapter.submitList(it) {
   viewBinding.searchList.scrollToPosition(0)
}
like image 125
I.S Avatar answered Jun 28 '26 15:06

I.S