0

このコードを使用して、for ループ内に動的ボタンを作成しています。

LinearLayout linearLayout =  (LinearLayout)findViewById(R.id.linearLayout2);
for (int i=0 ; i<10; i++){
LinearLayout l = new LinearLayout(this);
l.setOrientation(LinearLayout.HORIZONTAL);

TextView textview = new TextView(this);
textview.setText("Text view" + i);
textview.setId(i);

l.addView(textview);
Button button = new Button(this);
button.setText("View");
button.setId(i);
button.setWidth(90);
button.setHeight(60);
l.addView(button);
linearLayout.addView(l);//if you want you can layout params linearlayout
}

今、反復 i 値に基づいて各ボタンに onclick イベントを追加したい..これを実装する方法を誰かが提案できますか...事前に感謝します..

4

4 に答える 4

4

ボタンの配列を作成します...

Button[] buttons=new Button[10];

そして、この行の代わりに

Button button = new Button(this);

あなたのforループで..使用

 button[i] = new Button(this);

そして、同じループで onclicklistener をこのように設定します..そして、あなたが求めていた質問に基づいて、反復 i 値に基づいて各ボタンに onclick イベントを追加します.すべてのボタンに同じ onclicklistener があると思います..

    button[i].setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
        //your onclicklistener code
}

});

于 2012-04-13T18:24:45.193 に答える
2

の を作成し、作成ListButtonにそれぞれButtonをそのリストに追加します...

List<Button> list = new ArrayList<Button>();
for (int i=0 ; i<10; i++){
LinearLayout l = new LinearLayout(this);
l.setOrientation(LinearLayout.HORIZONTAL);

TextView textview = new TextView(this);
textview.setText("Text view" + i);
textview.setId(i);

l.addView(textview);
Button button = new Button(this);
button.setText("View");
button.setId(i);
button.setWidth(90);
button.setHeight(60);
l.addView(button);
linearLayout.addView(l);//if you want you can layout params linearlayout
list.add(button);
}

次に、高度な for ループを使用してリストを反復処理し、各ボタンのクリック リスナーを追加します。

for(Button btn : list){
btn.setOnClickListener(this);
}
于 2012-04-13T18:23:05.933 に答える
0

ループの外側で新しいを作成しますView.OnClickListener:

OnClickListener ocl = new OnClickListener(){
    @Override
    public void onClick(View v){
        switch(v.getId()){
        case 1:
            // click action
            break;
        case 2: 
            // click action
            break;
        }
        // ...etc
    }
}

ボタンの ID (この場合は の繰り返し) に基づいて、iさまざまなアクションを実行できます。ただし、これはif...else、ボタンのテキストのブロックや設定したタグなど、何でもかまいません。

次に、ループ内で、あなたの前に、それをaddView(l)割り当てます:

button.setOnClickListener(ocl);
于 2012-04-13T18:16:01.837 に答える
0

button.setOnClickListener(this); を追加します。forループで

これらのコードを oncreate()::: の下に追加します。

@Override
public void onClick(View v){
switch(v.getId()){
case 0:
// click action for first btn
break;
case 1: 
// click action for 2nd btn
break;
soon upto 
case 9: 
// click action for 9th btn
break;
}
}

また、ypur アクティビティは onClickListerner を実装する必要があります。

于 2012-04-13T18:29:18.933 に答える