Как добавить задержку между каждым пунктом повторного просмотра? - PullRequest
1 голос
/ 15 октября 2019

Я хочу установить время задержки между каждым из моих пунктов повторного просмотра. У меня есть список конкретной временной задержки, которую я хочу для каждого элемента. Теперь, используя следующий код, он работает хорошо для меньшего количества элементов, но если есть 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 элементов, но для 10-15 элементов, когда яПрокрутите таймер 2 или 3 элемента одновременно, вместо того, чтобы ждать завершения предыдущего элемента

1 Ответ

1 голос
/ 15 октября 2019

просто инициализируйте просмотр списка повторения только одним элементом,

, затем посчитайте время с помощью 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...