如何在运行时创建多个按钮? + android

时间:2011-04-23 09:16:39

标签: android

我编写了以下代码,但没有得到如何为所有按钮编写OnclickListner()方法。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    LinearLayout layout = (LinearLayout) findViewById(R.id.ll1Relative);
    for (int i = 1; i < 10; i++) {
        LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT
        );
        Button b = new Button(this);
        b.setText(""+ i);
        b.setId(100+i);
        b.setWidth(30);
        b.setHeight(20);
        layout.addView(b, p);
    }
}

3 个答案:

答案 0 :(得分:2)

您可以使用这样的匿名内部方法:

Button b = new Button(this);
b.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // Perform action on click
    }
});
b.setText("" + i);
b.setTag("button" + i);
b.setWidth(30);
b.setHeight(20);

答案 1 :(得分:0)

如果您希望按钮执行不同的操作,可以让Activity扩展OnClickListener,在循环中设置b.setOnClickListener(this),并添加类似

的内容
@Override
public onClick(View v)
{
  // get who called by
  String sTag = (String) v.getTag();

  if (sTag.equals("button1"))
  {
    //do some stuff  
  }
  else if (sTag.equals("button2"))
  {
    //do some other stuff
  }
  // and so on
}

处理点击次数。


我在这里编辑这个,因为缺少换行符会使评论含糊不清:

int iBtnID = v.getId(); 
switch (iBtnID) 
{
  case 101: 
    // do stuff; 
    break; 
  case 102: 
    // do other stuff 
    break; 
  // and so on 
}

答案 2 :(得分:-1)

LinearLayout lin = (LinearLayout) findViewById(R.id.linearLayout);

Button b1 = new Button(this);


b1.setText("Btn");
b1.setId(int i=2);
b1.setonClicklistenor(this);
lin .addView(b1);

onclick (View v){


int i=v.getId();

if (i==2){

///operation
}
}
}