如何在每个recyclerview项目之间增加延迟?

时间:2019-10-15 04:42:37

标签: java android android-recyclerview

我想设置每个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个项目就可以了

1 个答案:

答案 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();