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 生命周期清理你的计时器,例如当应用程序进入后台时停止它,并且当它重新出现时重新启动它。在 onResume
和 onPause
中这样做是个好主意。
此外,您应该更改为正常的 Timer
,而不是 CountDownTimer
,将间隔设置为 5 seconds
,然后每隔 onTick
,滚动您的列表超过一项。
我正在创建一个水平回收器视图,它会在特定时间(比如 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 生命周期清理你的计时器,例如当应用程序进入后台时停止它,并且当它重新出现时重新启动它。在 onResume
和 onPause
中这样做是个好主意。
此外,您应该更改为正常的 Timer
,而不是 CountDownTimer
,将间隔设置为 5 seconds
,然后每隔 onTick
,滚动您的列表超过一项。