1

我有一个简单的脚本:

    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 时,它说它必须是最终的。

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

干杯,克里斯托夫

4

2 回答 2

0

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

于 2012-11-14T12:20:30.267 回答
0

您有 2 个选项:

  1. setOnClickListener行之前,您可以将另一个变量声明为 final,并且可以将x的值分配给它。然后,您将拥有最终变量,该变量保存可在函数内部使用的x的值。
  2. 您可以实现自己的实现OnClickListener的类,并且可以添加一个获取x值的构造函数。

一些一般性说明:我不知道这是您编写代码的方式,还是您在此处编写代码时屏蔽了它。(蒙面,意味着您更改了变量名称,这将更难理解您在做什么)

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

于 2012-11-14T12:23:17.380 回答