【问题标题】:CountdownTimer inside Recyclerview Adapter is not working properlyRecyclerview Adapter 中的 CountdownTimer 无法正常工作
【发布时间】:2018-07-30 17:36:32
【问题描述】:

我正在创建一个水平回收器视图,该视图会在一定时间(比如 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

希望有人能提供帮助。 谢谢你。 }

【问题讨论】:

    标签: android android-recyclerview android-viewholder


    【解决方案1】:

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

    我会将其移至您的StoryFragment,这将允许您根据 Android 生命周期清理计时器,例如在应用程序进入后台时停止它,并在它重新进入视图时重新启动它.在onResumeonPause 中这样做是个好主意。

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

    【讨论】:

    • 为什么我用普通定时器而不是倒数定时器?
    • 如果我按照你说的做,我无法在我的回收站视图中显示每个视图的进度条。就像在 WhatsApp 状态下一样,Instagram 故事..
    • 非常感谢。您的想法与倒数计时器配合得很好。
    猜你喜欢
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多