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

次の 2 つのオプションがあります。

  1. setOnClickListener行の前に、別の変数を final として宣言し、 xの値をそれに割り当てることができます。次に、関数内で使用できるxの値を保持する最終変数があります。
  2. OnClickListenerを実装する独自のクラスを実装し、 xの値を取得するコンストラクターを追加できます。

いくつかの一般的な注意事項: これがコードの書き方なのか、それともここに書いたときにマスクしたのかはわかりません。(マスクとは、変数名を変更して、何をしているのかを理解しにくくすることを意味します)

したがって、仮にマスクした場合は、マスクしないでください。回答が非常に難しくなります。これがコードの書き方である場合は、コーディング標準とその重要性に関する記事を読むことを強くお勧めします。コードが適切にインデントされておらず、変数の名前に意味がありません。そのプロジェクトを終えた後、1 か月後にもう一度コードを読み直してみてください。自分が書いた内容を理解するのがいかに難しいかがわかります。

于 2012-11-14T12:23:17.380 に答える
0

私の理解が正しければ、パラメーターを OnClickListener に渡す必要があります。独自の OnClickListener インターフェイスを実装することをお勧めします - rekaszeru の回答hereと同様

于 2012-11-14T12:20:30.267 に答える