我想设置每个recyclerview项目之间的延迟时间。我有一份我想为每个项目指定的特定时间延迟的列表。现在,使用以下代码可以很好地处理较少的项目,但如果有15-20个项目,则多个项目将同时开始。我假设这是因为未显示其他项目时,它将它们视为第一项并启动了计时器。
holder.timer.postDelayed(new Runnable() {
@Override
public void run() {
new CountDownTimer((long) (time.get(holder.getAdapterPosition()) * 60000), 1000) {
public void onTick(long millisUntilFinished) {
//timer.setText("minutes remaining: " + millisUntilFinished);
//here you can have your logic to set text to edittext
holder.timer.setText("" + String.format(FORMAT,
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(
TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
}
public void onFinish() {
holder.timer.setText("done!");
}
}.start();
}
}, delay* 60000);
现在这对4-5个项目有效,但当我同时滚动2或3个项目的计时器而不是等待上一个项目完成时,对于10-15个项目就可以了
答案 0 :(得分:1)
只需初始化一个项目,即可
然后用System.currentTimeMillis();
两秒钟后,在recyclerView列表中添加一个项目,并调用notifyItemInserted()
通知适配器已插入新项目。
类似这样的东西:
long initialTime = System.currentTimeMillis();
long now = System.currentTimeMillis();
while(now - initialTime < 2000){
now = System.currentTimeMillis();
}
//now code after two seconds..
mainList.add(item);
adapter.notifyItemInserted();