Android 是否有一种方法可以一次性为多个对象设置方法?

Android 是否有一种方法可以一次性为多个对象设置方法?,android,Android,例如,如果我有30个按钮,并且我想为每个按钮添加一个OnClickListener,我是否必须手动执行button.setOnClickListenerthis;每一个?这看起来很乱 是否可以使用循环或其他方式?查看以下代码: Button[] b = new Button[30]; for(int i=0; i < b.length; i++) { b[i].setOnClickListener(this);

例如,如果我有30个按钮,并且我想为每个按钮添加一个OnClickListener,我是否必须手动执行button.setOnClickListenerthis;每一个?这看起来很乱

是否可以使用循环或其他方式?

查看以下代码:

        Button[] b = new Button[30];

        for(int i=0; i < b.length; i++)
        {
            b[i].setOnClickListener(this);
        }
编辑:在此之前,您需要使用以下循环识别每个按钮

       for(int i=0; i< b.length; i++){
            b[i] = (Button) findViewById(R.id.button+i);
       } 
您可以在活动中实现onClickListener接口,然后根据ID侦听单击

    public class MyClickClass implements OnClickListener {
        @Override
        public void onClick(View v) {
            switch(v){
            case R.id.button1:
            //some code
            break;

            case R.id.button2:
           //some code
           break;
          }
       }
    }
在这里,布局是对包含按钮的父视图组的引用。我还假设您的活动扩展了onClickListener.setOnClickListenerthis。如果没有,则只传递对onclick方法的引用

for (int i = 0; i < layout.getChildCount(); i++) {
    View v = layout.getChildAt(i);
    Class c = v.getClass();
    if (c == Button.class) {
       ((Button)v).setOnClickListener(this);
    }
}

如果您的所有按钮不在同一个视图组中,只需稍加努力,就可以使其成为递归的。然后可以从根视图组向下递归。

如果需要为每个不同的按钮设置不同的操作, 您可以使用onClickListeners数组,然后在循环中的每个侦听器上运行。下面的示例假定按钮的数量等于侦听器的数量

 Button[] b = new Button[30];
 onClickListener[] myListeners = new onClickListener[30];

 {

//Initialize and add some code to each one of Listeners in the onClick method

 }


for(onClickListener a: myListiners)
{

    b[a.indexof].setOnClickListener(a);

}

您可以在XML属性中使用android:onClick=function\u name。@Gauravbh在Java中没有办法做到这一点吗?您必须手动设置onClick listener。如果按钮ID按顺序排列,则可以使用for循环。为什么需要30个按钮?您可以使用ListView或GridView,这要简单得多。@SteveBenett这只是一个例子。