I.S*_*I.S 7 android android-recyclerview android-diffutils
我搜索项目,每次从服务器获取当我搜索“o”时它起作用,然后“ot”它再次起作用并且作为“o”搜索的结果我有20个项目,如果“ot”我有 10 个项目,它们是这 20 个项目的一部分,我确实删除了 EditText 中的 t,它显示了 20 个项目,只有 recyclerview 滚动指示器位于中间这是我的 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)
})
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到我拍摄的视频 https://drive.google.com/drive/folders/1ia5y9TtL0PSAM1M4hVBILWcdSK1BDyKI?usp=sharing
我想回答我自己的问题,因为我从 Yi\xc4\x9fit 得到了答案
\n\n\n提交列表有另一个重载,当列表应用时,它会收到回调,您可以使用该重载,只需调用 rv.scrollToPosition(0)
\n
这是我的代码:
\nsearchAdapter.submitList(it) {\n viewBinding.searchList.scrollToPosition(0)\n}\nRun Code Online (Sandbox Code Playgroud)\n
这是 的预期行为DiffUtil。RecyclerView如果您想在结果更新后滚动到顶部,您可以调用layoutManager.scrollToPositionWithOffset(0, 0), 或recyclerView.smoothScrollToPosition(0)
| 归档时间: |
|
| 查看次数: |
2456 次 |
| 最近记录: |