RecyclerView ViewHolders 中的许多 CountDownTimer 出错

Error with many CountDownTimers in RecyclerView ViewHolders

我在 RecyclerView 中显示可变数量的 ViewHolder,每个 ViewHolder 中都有一个唯一的 CountDownTimer,显示在 TextView 中。

如果我在 RecyclerView 中没有大量的 ViewHolder,那么 CountDownTimers 会按预期逐秒递减。

但是,当我在 RecyclerView 中有大量(> 10 个左右)项目时,我的问题就出现了。当我用 RecyclerView 打开 Activity 时,我看到显示给我的 CountDownTimers 正常运行,但是当我上下滚动整个 RecyclerView 时,CountDownTimers 开始出现故障。

我所说的故障是指它们波动。例如,一个 CountDownTimer 将显示 20:15 然后跳转到 30:16 然后返回 20:14 然后返回 30:15。很奇怪。

这就是我认为的问题:当我向下滚动 RecyclerView 时,带有 CountDownTimers 的 ViewHolders 消失了,但它们的 CountDownTimers 没有被销毁,当我滚动回到那些 ViewHolders 时,有多个 CountDownTimers 被分配给 TextViews显示各自的倒计时。

我的问题是:假设我所描述的确实是问题所在,我该如何在 RecyclerView ViewHolders 滚动过去时取消它们?

根据我对 RecyclerView 的理解:

RecyclerView 会创建显示所需数量的 viewHolder 以及一个或多个额外的以实现平滑滚动。当它需要显示新项目时,它会检查是否存在任何未使用的 viewHolder。如果存在则重复使用现有的,否则创建新的。

在你的情况下,当你滚动很长时间时,它会尝试使用现有的 viewHolder,它可能会开始倒计时。现在,当新项目绑定时,它会开始另一个倒计时。这就是为什么它显示故障。

因此,您可以在开始倒计时之前添加检查并停止倒计时。希望对你有帮助。

提前致谢。