参考:https://stackoverflow.com/questions/44081579/sethasstableidstrue-in-recyclerview
问题场景
在一个RecyclerView中,itemd的数据以及数量均有可能发生改变,原本仅仅在Observer中使用MyAdapter.notifyDataSetChanged()
,但是出现刷新后item位置随机偏移的情况(尤其当前显示的item不为第一项,且刷新前后item数量不一样时),体验感极差,不够丝滑。
又尝试在MyAdapter.notifyDataSetChanged()
前面添加MyRecyclerView.adapter=null
和MyRecyclerView.adapter=MyAdapter
两行,虽然不会出现item偏移而且刷新后会显示第一个item(recyclerview整个被redraw了),但是中途会有短暂的空白,也不够丝滑。
问题解决
Observer按初版不变,在MyAdapter类下重载函数
@Override
override fun getItemId(position