如果我一次取消选中所有复选框,如何在所有复选框上设置计时器?如果我取消选中“checkbox1”并为该复选框设置计时器,是否不会取消选中“checkbox2”覆盖该计时器?
例如,当取消选中“checkbox1”时,我希望创建一个持续5分钟的计时器,当它只剩下1分钟时,我希望它将textview的文本更改为“你还剩1分钟”提示计时器即将结束。
public void onCheckedChanged(final CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (!buttonView.isChecked()) {
new CountDownTimer(300000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
if (millisUntilFinished < 60000) {
map.get(buttonView).setText("1 min left!");
} else if (millisUntilFinished < 30000) {
map.get(buttonView).setText("30 sec left!");
} else {
map.get(buttonView).setText(millisUntilFinished/60000 + ":" + (millisUntilFinished%60000)/1000);
}
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
map.get(buttonView).setText("Spawned!");
}
}.start();
} else if (buttonView.isChecked()) {
// cancel the timer basically
}
}
与我原本想做的不同,我为每个复选框创建了一个textview,因此不会让用户感到困惑。我创建了一个包含(Checkbox,TextView)的地图。如果取消选中该复选框,如何取消计时器?我做一个arraylist?如果是这样,我会在哪里将计时器添加到arraylist?
答案 0 :(得分:0)
Java / Android可以使用各种计时器。只是看看这里的“相关”主题就会出现:
如果您想为UI设置多个计时器,可以使用计时器创建一个类,并启动多个实例 - 每个复选框事件一个。在UI类中保留这些对象的数组。
您还可以为第一个事件设置一个计时器,并存储任何后续复选框事件的增量。
答案 1 :(得分:0)
http://developer.android.com/reference/java/util/Timer.html
创建三个计时器,只需在复选框为false或未选中或任何属性的情况下,每个计时器启动它们5分钟。使用每个计时器的计划方法做你正在谈论的那个1分钟。
答案 2 :(得分:0)
我主要担心的是......如果我一次取消选中它们,我如何同时为所有这些设置计时器?
您可以使用CountdownTimer。在onCheckedChangeListener
上设置CheckBoxes
,然后每次都为CountdownTimer
创建一个新实例。
如果我取消选中“checkbox1”并为该复选框设置计时器,是否不会取消选中“checkbox2”覆盖该计时器?
如果您为每个实例创建CountdownTimer
的单独实例,则不会给您带来问题。
如果需要,您可以将CountdownTimer
的这些实例存储在Array
中,以便您可以迭代它们并在需要时取消并重新启动每个实例。