为什么调用scrollToPosition会在列表后面创建一行?

时间:2017-06-19 00:56:03

标签: android android-fragments android-recyclerview

在我的recyclerview中,我有一个要删除的滑动以及撤消操作。 每当我撤消我所做的删除操作时,列表后面会出现一行。

以下是我的应用的当前设置:

Activity
 - Fragment
   - Recyclerview

这是我的删除操作。这是在recyclerview适配器中:

cards.remove(pos);
notifyItemRemoved(pos);

这是我的撤消行动:

#inside my fragment
adapter.undoDiscard(pos, card);
layoutManager.scrollToPosition(pos);

#inside my adapter
public void undoDiscard(int pos, Card card) {
    cards.add(pos, card);
    notifyItemInserted(pos);
}

到目前为止我的观察结果:

  1. 当从Activity创建recyclerview时,错误不会出现
  2. 当我关闭recyclerview的动画时,错误不会发生
  3. 该错误似乎来自scrollToPosition
  4. 当我使用notifyDataSetChanged
  5. 时,错误不会发生

    为了说明问题,这是一个示例图像。 enter image description here

    调用undo:

    enter image description here

1 个答案:

答案 0 :(得分:0)

该错误是由recyclerview的动画引起的。因此,解决方案是在调用default_graph时暂时关闭动画。在我的情况下,我使用scrollToPosition为用户提供撤消更改的选项。所以我在解开零食吧后把动画带回来。

snackbar