改为局部刷新
问题待研究:
1)StaggeredGridLayoutManager 当 item 只有一个时:
2)RecyclerView 的 notifyItemRemoved 的坑:
因为该方法不会使 position 及其之后位置的 itemView 重新 onBindViewHolder;
在删除单项后,已经出现在画面里的项不会再有调用 onBind 机会,这样它保留的 position 一直是未进行删除操作前的 position 值。所以,我们一般需要在 notifyItemRemoved 之后再刷新一次。改用 DiffUtil 之后就不需要了。
使用 RecyclerView 的 notifyItemRemoved 的一个坑:https://www.jianshu.com/p/1ee0966b6706
当我们需要 remove 掉一条数据(位置在 position )时,想要使用 RecyclerView 的动态效果,就需要调用 notifyItemRemoved。但是该方法不会使 position 及其之后位置的 itemView 重新 onBindViewHolder。所以不当使用会导致下标错乱