一个activit里有好多button 只能用循环来创建 这些button问题来了 如何给每个button都加上监听器????难道每个button都需要写死吗?
代码如下public class GuessNumberActivity extends Activity {
/** Called when the activity is first created. */
int ButtonNum = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout main = (LinearLayout)findViewById(R.id.main);
TableLayout table = (TableLayout)findViewById(R.id.tablelayout);
TableRow tablerow;
Button[] BotArray = new Button[81];
for(int i = 0;i<9;i++)
{
tablerow = new TableRow(this);
createButton(i,tablerow,table,BotArray);
}
}
public void createButton(int guess_number,TableRow tablerow,TableLayout table,final Button[] BotArray)
{
Button bn1;
for(int i = 0;i<9;i++)
{
int randomNum=(int)( Math.random()*10);
bn1 = new Button(this);
bn1.setTextSize((float)17.0);
bn1.setText(randomNum+" ");
bn1.setMaxHeight(5);
BotArray[ButtonNum] = bn1;
ButtonNum++;
tablerow.addView(bn1);
}
table.addView(tablerow);
}
}
代码如下public class GuessNumberActivity extends Activity {
/** Called when the activity is first created. */
int ButtonNum = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout main = (LinearLayout)findViewById(R.id.main);
TableLayout table = (TableLayout)findViewById(R.id.tablelayout);
TableRow tablerow;
Button[] BotArray = new Button[81];
for(int i = 0;i<9;i++)
{
tablerow = new TableRow(this);
createButton(i,tablerow,table,BotArray);
}
}
public void createButton(int guess_number,TableRow tablerow,TableLayout table,final Button[] BotArray)
{
Button bn1;
for(int i = 0;i<9;i++)
{
int randomNum=(int)( Math.random()*10);
bn1 = new Button(this);
bn1.setTextSize((float)17.0);
bn1.setText(randomNum+" ");
bn1.setMaxHeight(5);
BotArray[ButtonNum] = bn1;
ButtonNum++;
tablerow.addView(bn1);
}
table.addView(tablerow);
}
}
private void onBtnSelectClick(Button btn){
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button button = (Button)v;
if(button.getId()==R.id.btnTxtBack){
finish();
}else if(button.getId()==R.id.btnTxtSend){
}else if(button.getId()==R.id.btnTxtSelPer){
}
}
});
统一调用就完了,如果你要使用button的某一个公共属性,处理上没区别的话就不需要加if条件了。
public void onClick(View v)
{
switch (v.getId())
{
case R.id.class_mgmt_btn:
Intent c = new Intent(this,ShowOneTable.class);
startActivity(c);
break;
case R.id.student_mgmt_btn:
showTodoDlg();
break;
case R.id.parent_mgmt_btn:
showTodoDlg();
break;
case R.id.notes_mgmt_btn:
showTodoDlg();
break;
}
}
然后,在OnClick()方法中直接取到id,然后针对该view(其实Button也是一个View),你想干什么就干什么.
而不是针对每个Button去绑定响应方法.
我在avtivit里的onClick函数实现了 可是按button 一点反应都没有啊
代码如下public class Test1Activity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
Button bn;
Button[] bnArrey = new Button[81];
int buttonnum = 0;
TableRow tablerow;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TableLayout table = (TableLayout)findViewById(R.id.tablelayout);
for(int i=0;i<9;i++)
{
tablerow = new TableRow(this);
create(table,tablerow);
}
} @Override
public void onClick(View v) {
int i = (Integer) v.getTag();
Button bnn = (Button)v;
for(int bnnum = 0;bnnum < bnArrey.length;bnnum++)
{
System.out.println(bnnum);
if(i == (Integer)bnArrey[bnnum].getTag())
{
bnn.setText("10");
}
}
}
public void create(TableLayout table,TableRow tablerow)
{
for(int i = 0;i<9;i++)
{
bnArrey[buttonnum] = new Button(this);
bnArrey[buttonnum].setText(i+"");
bnArrey[buttonnum].setTag(buttonnum);
tablerow.addView(bnArrey[buttonnum]);
buttonnum++;
}
table.addView(tablerow);
}
}