ボタンを動的に複数用意した場合のクリックイベント実装手段

2,392 views
Skip to first unread message

エッグマン

unread,
Sep 23, 2011, 9:05:10 AM9/23/11
to 日本Androidの会
はじめて投稿します。
エッグマンです、よろしくお願いします。

今現在、簡単なアプリを作成しているのですが、特定の処理でつまづいてしまったので質問をさせてください。

あるActivityのonCreate内でボタンを動的に用意する次のような処理があります。

setContentView(R.layout.main);
LinearLayout lLayout = (LinearLayout)findViewById(R.id.mainlayout);

Button btn;
for( int i = 0 ; i < 10 ; i++){
  btn = new Button(this);
  btn.setText("Button"+(i+1));
  btn.setOnClickListener(new OnClickListener(){
    public void onClick(View v){
     //クリック処理
     //ここの処理が思い浮かばない
    }
  });
  lLayout.addView(btn);
}

クリック処理を、ボタン毎にそれぞれ変えたいと考えています。(例えば、ボタン1が押されました 等)
上記の実装方法では難しいでしょうか?

よろしくお願いいたします。

元木

unread,
Sep 23, 2011, 11:49:04 AM9/23/11
to android-g...@googlegroups.com
こんばんは、元木です。

こんなのは、いかがでしょう?

        for( int i = 0 ; i < 10 ; i++){
            
            final int number = i + 1;
            
            btn = new Button(this);
            btn.setText("Button"+(i+1));
            btn.setOnClickListener(new OnClickListener(){
                public void onClick(View v) {
                    //クリック処理
                    Toast.makeText(
                            SampleActivity.this,
                            "ボタン" + number + "が押されました。" ,
                            Toast.LENGTH_LONG).show();
                }
            });
            lLayout.addView(btn);
        }

2011年9月23日22:05 エッグマン <djk...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


エッグマン

unread,
Sep 23, 2011, 2:07:39 PM9/23/11
to 日本Androidの会
エッグマンです。素早い投稿感謝致します。
お返事遅くなって申し訳ありません。

おかげ様で、考えていた通りの処理ができました。
本当に、ありがとうございました。

HideCheck

unread,
Sep 24, 2011, 12:26:27 AM9/24/11
to android-g...@googlegroups.com

すでに解決済みのようですが、view#setid getidを使ってもいいとおもいます

2011/09/24 3:08 "エッグマン" <djk...@gmail.com>:

kousuke satou

unread,
Sep 24, 2011, 7:14:41 AM9/24/11
to android-g...@googlegroups.com
こんばんは、エッグマンです。

HideCheck様、ありがとうございます。

・Buttonをfinal宣言してsetId()する
・onClick内でボタンのgetId()でIDを貰って処理する

というやり方でも上手く処理することができました。

onClick内で配列も一緒に使用したかったので、
元木様に教授頂いた、final宣言した変数を用いる方法でコーディングしています。

プログラムの経験が趣味レベルで、自分の引き出しも貧弱ですが、
貴重なテクニックの一つとして覚えておきたいと思います。
ありがとうございました。

Reply all
Reply to author
Forward
0 new messages