例如,如果我有 30 个按钮,并且我想为OnClickListener
每个按钮添加一个,我是否必须手动执行button.setOnClickListener(this);
?这似乎非常混乱。
是否可以使用循环或其他东西?
例如,如果我有 30 个按钮,并且我想为OnClickListener
每个按钮添加一个,我是否必须手动执行button.setOnClickListener(this);
?这似乎非常混乱。
是否可以使用循环或其他东西?
看看这段代码:
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(s) 的数组,然后在循环中的每个按钮上运行。以下示例假定按钮的数量等于侦听器的数量。
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);
}
这里,layout
是对包含您的按钮的父视图组的引用。我还假设您的 Activity 扩展了 onClickListener ( .setOnClickListener(this)
)。如果没有,那么只需传递对您的 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);
}
}
如果您的所有按钮都不存在于同一个视图组中,只需稍加努力,就可以使其递归。然后,您可以从根视图组向下递归。
您可以onClickListener
在 Activity 中实现该接口,然后根据 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;
}
}
}