android按钮循环

时间:2012-11-14 12:03:52

标签: android loops button

我有一个简单的脚本:

    int phases = 6;
    final int max = 8;
    final TextView[] a = new TextView[(max * phases)];
    final Button[] b = new Button[phases]; // creates the buttons to display
                                            // the single phases

    for (int x = 0; x < phases; x++) {
        b[x] = new Button(this);
        b[x].setText("yourbutton");
        // linL.addView(b[x]);
        b[x].setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (a[(3)].getVisibility() == 0) {
                    for (int i = 0; i < max; i++)
                        a[i].setVisibility(View.GONE);
                } else {
                    for (int i = 0; i < max; i++)
                        a[i].setVisibility(View.VISIBLE);
                }
            };
        });
    }

这基本上会检查文本视图是否可见,如果不可见,则会使其可见(加上反过来)。

我现在的问题是我不想一次又一次地切换相同的文本视图,我想根据按钮创建的当前循环的x来更改视图。

然而,当我尝试包含这个x时,它说它必须是最终的。

那么我如何在点击监听器脚本中获取参数呢? (我试图添加它们,但是它说我必须再次编程整个监听器...这就是为什么我要问是否有更聪明的方法来做它)

干杯,Christoph

2 个答案:

答案 0 :(得分:0)

如果我正确进行,您需要将参数传递给OnClickListener。我建议你实现自己的OnClickListener接口 - 类似于rekaszeru的回答here

答案 1 :(得分:0)

您有两个选择:

  1. setOnClickListener 行之前,您可以将另一个变量声明为final,您可以将 x 的值分配给它。然后你将得到一个包含 x 值的final变量,它可以在函数中使用。
  2. 您可以实现自己的实现 OnClickListener 的类,并且可以添加一个获取 x 值的构造函数。
  3. 一些一般性说明: 我不知道这是你编写代码的方式,还是你在这里编写时掩盖它的方式。 (蒙面,意味着您更改变量名称,以便更难理解您正在做什么)

    所以,如果你掩饰它,请不要,它会让你更难回答。 如果这是你编写代码的方式,我真的鼓励你阅读一些关于编码标准的文章和重要性。您的代码没有正确缩进,并且变量的名称没有意义。完成该项目后,尝试在一个月后再次阅读您的代码,您将看到理解您所写内容的难度