Recyclerview Adapter 中的 CountdownTimer 无法正常工作

CountdownTimer inside Recyclerview Adapter is not working properly

我正在创建一个水平回收器视图,它会在特定时间(比如 5 秒)后自动滚动。 我用倒数计时器。但是,它没有按预期工作。计时器不正确 运行。有时它会同时跳过两个或更多回收站项目。

这是我的代码:

class StoryViewHolder extends RecyclerView.ViewHolder {
{
CountDownTimer timer;
....
}
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
{
.....
if (holder.timer != null) {
            holder.timer.cancel();
        }

        holder.timer = new CountDownTimer(5000, 1000) {
            @Override
            public void onTick(long timeLeft) {

            }

            @Override
            public void onFinish() {
                StoryFragment.scrollToPosition((position+1));
            }
        };
        holder.timer.start();
}

我的问题和这个问题类似。但是他们说的答案是行不通的。 Set counter inside RecyclerView

希望有人能帮忙。 谢谢你。 }

我建议将 CountDownTimer 移到 ViewHolder 之外。您的 ViewHolder 通常仅用于在 RecyclerView 中呈现该项目。让它做不止一件事不是一个好主意,例如处理它的列表滚动。

我会把它移到你的 StoryFragment 中,这将允许你根据 Android 生命周期清理你的计时器,例如当应用程序进入后台时停止它,并且当它重新出现时重新启动它。在 onResumeonPause 中这样做是个好主意。

此外,您应该更改为正常的 Timer,而不是 CountDownTimer,将间隔设置为 5 seconds,然后每隔 onTick,滚动您的列表超过一项。