java - 练习列表 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++;
}
解决方案
尝试使用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);
推荐阅读
- c++ - 拉格朗日插值如何包含区间
- python - 无法从 Django 打开另一个 HTML 文件
- python - ImportError:即使已安装,也没有名为 htmlcreator 的模块
- python - 检测图像是否像素化的最佳方法是什么?
- mysql - 如何从使用 mysql.createConnection 切换到 mysql.createPool
- r - repolr 出错:rowSums 中的错误(t(mapply(complete.cases,split.data))):'x' 必须是数字
- javascript - 如何在 .map 数组中调用函数?
- android - 如何在横向视图中播放视频?
- c++ - 如何编写无依赖的Windows程序?
- mongodb - mongorestore 无法恢复大型数据集的索引