2

我在一家RecyclerView显示可变数目ViewHolders,每个与它独特的CountDownTimer,在TextView中显示。错误与RecyclerView ViewHolders许多CountDownTimers

如果我没有大量的RecyclerView ViewHolders的那么CountDownTimers剔下来预期,逐秒。

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

由于故障我的意思是它们波动。例如,一个CountDownTimer将显示20:15然后跳到30:16然后回到20:14然后回到30:15。这很奇怪。

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

我的问题是这样的:假设我描述确实是问题,我怎么取消CountDownTimers在RecyclerView ViewHolders,因为它们可以滚动过去?

+0

看看这个答案,可能会帮助你http://stackoverflow.com/a/31060029/6414107 – SaravInfern

回答

1

从我约RecyclerView理解:

RecyclerView创建viewHolders尽可能多的,因为它需要显示加一或平滑滚动更多的额外费用。当它需要显示新的项目时,它会检查是否存在任何未使用的viewHolder。如果存在,则重用现有的创建新的。

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

所以,你可以开始倒计时下来之前增加一个检查&停止计数。希望它能帮助你。

在此先感谢。