基于java的android练习表执行

iyfjxgzm  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(266)

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

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++;
        }
rsl1atfo

rsl1atfo1#

尝试使用 postDelayed 处理方法:

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);

相关问题