Android开发:如何在未选中时将计时器设置为多个复选框?

时间:2013-07-02 13:55:32

标签: android

如果我一次取消选中所有复选框,如何在所有复选框上设置计时器?如果我取消选中“checkbox1”并为该复选框设置计时器,是否不会取消选中“checkbox2”覆盖该计时器?

  • 我有3个复选框和1个textview,
  • 处于已检查状态的所有复选框。
  • 我想在取消选中其中任何一个时创建一个计时器。
  • 我希望每个复选框都有一个独立的计时器

例如,当取消选中“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?

3 个答案:

答案 0 :(得分:0)

Java / Android可以使用各种计时器。只是看看这里的“相关”主题就会出现:

this
this
and so on...

如果您想为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中,以便您可以迭代它们并在需要时取消并重新启动每个实例。