我有一个动态的按钮数组,我想知道如何处理每个按钮上的 onclick?
谢谢
我认为不需要为每个按钮创建一个新的 OnClickListener ——所有按钮都可以共享一个侦听器。
private OnClickListener myListener = new OnClickListener() {
public void onClick(View v) {
Object tag = v.getTag();
// Do something depending on the value of the tag
}
};
...
for (int i=0; i < btns.length; ++i) {
btns[i].setOnClickListener(myListener);
btns[i].setTag(some_identifying_information);
}
当然,您可以为每个按钮创建一个唯一的 OnClickListener,并利用这种方式:
for (int i=0; i < btns.length; ++i) {
final Button btn = btns[i];
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// do something depending on the value of btn, which you're allowed
// to reference here because it was declared final above.
}
});
}
就像你在一个按钮上一样......
设置一个点击监听器,如果你有一个数组,它看起来像这样:
btns[0].setOnClickListener(new OnClickListener() {
public void onClick(View v){
//do something
}
});
btns[1].setOnClickListener(new OnClickListener() {
public void onClick(View v){
//do something
}
});
//etc.
如果你想让他们都做同样的事情,你可以使用 for 循环来循环数组,如下所示:
for(int i = 0; i< btns.length; i++){
btns[i].setOnClickListener(new OnClickListener() {
public void onClick(View v){
//do something
}
});
}
我不知道你在做什么,但如果你有一个按钮数组,你可能应该使用带有 ListView 或其他东西的适配器,而不是你现在如何做。
没有看到一些代码或更多解释,很难真正回答你的问题,但这里有一些提示:
在我们到达监听器之前,我们必须确保每个动态创建的按钮都知道如何响应点击事件。您可以使用setTag
按钮上的方法将任意对象附加到它。此对象将表示按钮在单击时的行为。您可以只使用整数作为这个对象(可能是一些常量值),或者如果每个按钮都需要一些唯一的数据,创建一个类来维护按钮在单击时需要如何操作以及您需要的数据(或者至少是对它的引用)。
然后,您可以初始化一个处理所有按钮单击的侦听器。在onClick
此侦听器的方法中放置一个分支以处理所有点击案例的条件。在创建动态按钮时,在所有动态按钮上设置此侦听器。在您的 onClick 开始时,从方法的View
参数中获取标记onClick
(此视图将是被单击的按钮),并使用它来决定条件的哪个分支。
希望这可以帮助。如果您的问题更具体,我们将能够提供更详细的帮助。