调用 notifyItemMoved之后,要调用notifyItemRangeChanged(),如下。这样数据才不会乱。前提你自己把数据先重新排好序。数据库排序的话,重写equals,hashCode,重新拉一下也行。
int newPosition =mList.indexOf(r);
Logger.d("newPosition " + newPosition +" i: " +i);
//相同的位置就不要刷新了。
if (newPosition ==i)return;
notifyItemMoved(i, newPosition);
notifyItemRangeChanged(Math.min(i, newPosition), Math.abs(i - newPosition) +1);