RecyclerView的DiffUtils产生奇怪的重叠项

时间:2016-11-02 19:41:35

标签: android android-recyclerview

我有一个简单的RecyclerView和Adapter,如下所示:

Normal view

然后我想在用户点击按钮后重新排序项目(在另一个位置移动)。即我想将紫罗兰色盒子中的物品移到另一个位置。 enter image description here

所以我更改了适配器数据集和DiffUtils中的项目,以便完成移动动画。

但是在动画结束时,屏幕看起来像这样:

enter image description here

如您所见:该项目与另一项目重叠:

enter image description here

我调试了我的DiffUtil Callback实现,一切正常。调度也按预期工作。我添加了一些日志:

 data.getDiffResult().dispatchUpdatesTo(new ListUpdateCallback() {
          @Override public void onInserted(int position, int count) {
            Log.d("Test", "Insert position "+position+" count "+count);
          }

          @Override public void onRemoved(int position, int count) {
            Log.d("Test", "Removed removed "+position+" count "+count);
          }

          @Override public void onMoved(int fromPosition, int toPosition) {
            Log.d("Test", "Moved position "+fromPosition+" to " +toPosition);
          }

          @Override public void onChanged(int position, int count, Object payload) {
            Log.d("Test", "Changed position "+position+" count "+count);
          }
        });

然后logcat打印预期的(正确的)结果

  

将位置3移至8

     

更改位置8计数1

它真的是一个RecyclerView错误吗?有人遇到过同样的问题吗? 我尝试了RecyclerView版本24.2.025.0.0,它们在UI中具有相同的行为和不正确的结果。

0 个答案:

没有答案