添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

项目用到,实现一个recyclerView列表的item翻转动效,翻转的同时会将指定item置顶。

(比如交换AB位置,A在0位置,指定的item B 在 i 位置)

原始使用的是插入B到0位置,然后移除B

dataList.add(0, bean);
mAdapter.notifyItemInserted(0);
mAdapter.notifyItemRangeChanged(0, dataList.size());
dataList.remove(bean);
mAdapter.notifyItemRemoved(i + 1);
if (i + 1 < dataList.size()) {
mAdapter.notifyItemRangeChanged(i + 1, dataList.size() - (i + 1));
}

这样插入移除更新引起的问题即是recyclerView的item错乱和重复,并且不是在recyclerView上的数据混乱,是在原recyclerView布局地方的上层或下层出现一块重复了的item。emm,具体原因我也不清楚,反正能确定的就是这里remove+add引起的,然后修改成了直接将AB交换位置,解决问题。

                dataList.set(i, dataList.get(0));
                mAdapter.notifyItemChanged(i);
                if (i < dataList.size()) {
                    mAdapter.notifyItemRangeChanged(i, dataList.size() - (i));
                dataList.set(0, bean);
                mAdapter.notifyItemChanged(0);
                mAdapter.notifyItemRangeChanged(0, dataList.size());