0

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

  • 我有 3 个复选框和 1 个文本视图,
  • 处于选中状态的所有复选框。
  • 我想在其中任何一个未选中时创建一个计时器。
  • 我希望每个复选框都有一个独立的计时器

例如,当未选中“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)的地图。取消选中复选框时如何取消计时器?我做一个数组列表吗?如果是这样,我会在哪里将计时器添加到数组列表中?

4

3 回答 3

0

Java / Android 有各种各样的计时器等等。只需查看此处的“相关”主题即可:

这个
这个
等等……

如果您想为您的 UI 设置多个计时器,您可以使用计时器创建一个类并启动多个实例 - 每个复选框事件一个。在您的 UI 类中保留这些对象的数组。

您还可以为第一个事件设置一个计时器,并为任何后续复选框事件存储增量。

于 2013-07-02T14:04:34.490 回答
0

http://developer.android.com/reference/java/util/Timer.html

创建三个计时器,当复选框为假或未选中或任何属性时,每个计时器只需 5 分钟即可启动。使用每个计时器的 schedule 方法来完成您所说的剩下 1 分钟的事情。

于 2013-07-02T14:04:43.127 回答
0

我主要关心的是......如果我要一次取消选中它们,我如何同时为所有这些设置一个计时器?

您可以使用CountdownTimer。每次都设置一个onCheckedChangeListenerCheckBoxes创建一个新实例。CountdownTimer

如果我取消选中“checkbox1”并为该复选框设置一个计时器,取消选中“checkbox2”不会覆盖该计时器吗?

如果您CountdownTimer为每个单独的实例创建单独的实例,则不会给您带来问题。

如果需要,您可以将这些实例存储CountdownTimer在 anArray中,以便可以迭代它们并在需要时取消并重新启动每个实例。

于 2013-07-02T14:13:22.170 回答