这个问题是因为调用notifyDataSetChanged时会刷新整体数据和界面,解决方法:
在XML布局文件中的RecycleView,添加属性android:descendantFocusability="beforeDescendants"和android:fastScrollEnabled="false",即可解决此问题。
首先说一下android:descendantFocusability属性,该属性有三个值:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性,但是不同的场景不同的需求,我使用beforeDescendants也是为了解决列表置顶问题,不让列表获取焦点就不会异常滑动了。
android:fastScrollEnabled这个属性从字面上理解就是是否快速滑动,设为false,也是加一层保险措施。