首页 > 解决方案 > 练习列表 Execution Android with Java

问题描述

嗨,我正在尝试实现一个练习执行列表,其中每个练习都应该更改背景颜色,表示每个练习每次 T 次运行的当前练习。我想知道如何实现等待T时间直到练习完成以突出下一个的动作。我有这样的东西,但阻塞线程并没有起到作用。

 ArrayList<ExerciseData> exercises;
        ExerciseData ex;
        int curr = 0;
        int cycleSize = warmUpAdapter.getItemCount();
        exercises = (ArrayList<ExerciseData>) warmUpAdapter.getExerciseList();

        while( curr < cycleSize ){
            ex = exercises.get(curr);
            ex.setRunning(true);
            warmUpAdapter.notifyItemChanged(curr);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            ex.setRunning(false);
            warmUpAdapter.notifyItemChanged(curr);
            curr++;
        }

标签: javaandroid

解决方案


尝试使用HandlerpostDelayed的方法:

private static Handler handler = new Handler();

private void doExercise(final int curr){
    ArrayList<ExerciseData> exercises = (ArrayList<ExerciseData>) warmUpAdapter.getExerciseList();
    if (curr >= exercises.size()){
        System.out.println("Finished");
        return;
    }
    final ExerciseData ex = exercises.get(curr);
    ex.setRunning(true);
    System.out.println("Running exercise " + curr);
    warmUpAdapter.notifyItemChanged(curr);
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            ex.setRunning(false);
            warmUpAdapter.notifyItemChanged(curr);
            doExercise(curr + 1);
        }
    }, 1000);
}

... call later to start exercises:
doExercise(0);

推荐阅读