notifyDataSetChanged优化

改为局部刷新

问题待研究:

1)StaggeredGridLayoutManager 当 item 只有一个时:

https://stackoverflow.com/questions/27800575/recyclerview-staggeredgridlayoutmanager-reordering-issue

2)RecyclerView 的 notifyItemRemoved 的坑:

https://stackoverflow.com/questions/28189371/using-notifyitemremoved-or-notifydatasetchanged-with-recyclerview-in-android

因为该方法不会使 position 及其之后位置的 itemView 重新 onBindViewHolder;

在删除单项后,已经出现在画面里的项不会再有调用 onBind 机会,这样它保留的 position 一直是未进行删除操作前的 position 值。所以,我们一般需要在 notifyItemRemoved 之后再刷新一次。改用 DiffUtil 之后就不需要了。

使用 RecyclerView 的 notifyItemRemoved 的一个坑:https://www.jianshu.com/p/1ee0966b6706

当我们需要 remove 掉一条数据(位置在 position )时,想要使用 RecyclerView 的动态效果,就需要调用 notifyItemRemoved。但是该方法不会使 position 及其之后位置的 itemView 重新 onBindViewHolder。所以不当使用会导致下标错乱

    原文作者:BugFree张瑞
    原文地址: https://www.jianshu.com/p/4afda7a4f9e1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞