RecycleView调用notifyDataSetChanged列表会置顶

这个问题是因为调用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,也是加一层保险措施。

你可能感兴趣的:(RecycleView调用notifyDataSetChanged列表会置顶)