当前位置: 首页 > 知识库问答 >
问题:

在RecyclerView中制作项目交换动画

戚修雅
2023-03-14

我已经用适配器和所有东西实现了一个回收器视图。我可以用

Collections.reverse(items);

然后运行列表以通知适配器此更改

final int end = items.size() - 1;
for (int i = 0; i < end; i++) {
    mAdapter.notifyItemMoved(0, end - i);
}

到目前为止一切顺利。我现在想做的是交换列表中的两个项目,并动画显示这一变化。

Collections.swap(items, 5, 8);

mAdapter.notifyItemMoved(5, 8);
mAdapter.notifyItemMoved(8, 5);

问题是,这不是动画,我不知道为什么。

我确实想要一些类似于简单反向动画的东西。

有什么想法吗?

共有1个答案

柯翔
2023-03-14

写完这篇文章后不久,我又黑了一点,找到了原因。事实证明,我的问题确实与以下线程有关:

在RecyclerView上删除项目时没有动画

我确实搞砸了我的notifyDataSetChanged()和notifyItemMoved(0,1)调用。调用notifyDataSetChanged()后,交换项目时不会显示动画,notifyItemMoved也不会产生任何效果。

 类似资料:
  • 在适配器中 我试过了所有的方法,但是很难从RecolyerView中滑动项目,并且当snackbar的undo被按下时,我希望该项目重新出现。我希望从RecolyerView中滑动项目,并且当项目被滑动时,底部的项目应该向上移动。

  • 这是我现在面临的一个奇怪的问题。从我的应用程序中,我从JSON文件中从链接中获取数据,然后用Volley解析它。现在我想在一个看起来不起作用的RecyclerView上显示数据,我很高兴我的代码很好,但是有些东西似乎不起作用,我找不到它。 这是活动代码 HomeActivity.java: 这是我从适配器中扩展的布局,并从JSON文件中设置数据 和适配器类相关的代码,我猜: @Override p

  • 我想使用swipe手势(即gmail应用程序)实现recyclerview项目之间的导航。这样,用户就不必返回列表,只需单击下一个项目就可以获得其详细信息视图。我找不到如何实现这一点的教程。

  • 视图将被重新创建,使过渡变得非常奇怪,因为它在下一个项目移动的同时会在该项目的上方褪色。出现的新视图没有调整大小,它已处于完整大小。 重新创建视图时,旧视图淡出,新视图淡出,这会使视图背景颜色闪烁。 我还尝试在动画期间在item视图上设置,但这种方法的问题是RecycleView的布局会立即更新,并且不会跟随动画。 我已经为这两次尝试创建了一个小的演示项目。项目的来源在这里。

  • 我已经设置了一个回收器视图,每行都有文本视图和隐藏按钮。 如果用户单击该项,就会显示按钮。 如果用户单击其他项,则按钮将被隐藏。 再循环视图将位置发送到每个接口的活动,该活动更改其属性。 只要不滚动recyclerview,一切都能完美运行。 Layoutmanager.getchildat(职位) 现在,当项目超出视图时,用户滚动recyclerview,位置就会出错。每向下滚动一个用户单击的项

  • 我有以下代码来设置RecyclerView项目的动画。这工作得很好,但如果我向下滚动,它会为所有出现的项目设置动画。 我想要的是类似于Google Play音乐应用程序中的行为,其中动画仅为最初可见的项目播放。通过滚动变得可见的项目应该出现在没有动画适配器的情况下。知道如何存档这种行为吗?