0

ここでは、for ループを使用して動的に 20 個のボタンを作成しています。

for(int i =1 ;i <= 20 ;i++){
Button b = new Button(this);
b.setText(String.valueOf(i));
b.setId(String.valueOf(i));
b.setBackgroudColor(Color.Red);

b.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            b.setBackgroundColor(Color.GREEN);


        }
);

}

最初のボタンの色を選択すると、緑に変わり、残りはすべて赤になります。同様に、2番目のボタンを選択すると、1番目と2番目のボタンの色は緑になり、残りはすべて赤になります。これは正常に動作する方法ですが、私の要件は、任意のボタンを2回目に選択した場合、すべてのボタンと前に押したボタンの色が赤になることです。そうするために、以前のボタンIDを取得していません。この問題を解決できますか

4

2 に答える 2

0

前に押されたボタンの参照を保持します。

final Button prevButton;
for(int i =1 ;i <= 20 ;i++){
    Button b = new Button(this);    
    b.setText(String.valueOf(i));
    b.setId(String.valueOf(i));
    b.setBackgroudColor(Color.Red);

    b.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                if(prevButton != null)
                    prevButton.setBackgroundColor(Color.RED);
                b.setBackgroundColor(Color.GREEN);
                prevButton = (Button)v;
            }
    );
}
于 2012-06-04T12:11:15.440 に答える
-1

20 個のボタンを使用するのが適切な選択でよろしいですか? GridView を使用できますか? backGroundColor も変更できます: forums.pragprog.com/forums/152/topics/10301

于 2012-06-04T12:15:20.937 に答える