我正在使用此代码在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事件..任何人都可以建议我如何实现这个...提前感谢..
答案 0 :(得分:4)
创建一个按钮阵列......
Button[] buttons=new Button[10];
而不是这一行
Button button = new Button(this);
你的for循环中的使用
button[i] = new Button(this);
并在同一个循环中设置你的onclicklistener就像这样......并根据你要求的问题根据迭代i值为每个按钮添加onclick事件我认为你有相同的onclicklistener for all按钮..
button[i].setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
//your onclicklistener code
}
});
答案 1 :(得分:2)
创建List
Button
个,然后在创建后将每个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循环遍历列表并为每个Button添加单击侦听器..
for(Button btn : list){
btn.setOnClickListener(this);
}
答案 2 :(得分: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);
答案 3 :(得分:0)
添加button.setOnClickListener(this);在forloop
并在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。