1

我创建了一个带有按钮的 ArrayList,并在所有按钮上设置了 OnClickListener。

for (int i = 0; i < 27; i++) {
        myButtons.add(new Button(this));
        myButtons.get(i).setOnClickListener(this);
        myButtons.get(i).setLayoutParams(params);
}

但是我现在如何才能看到,在 onClick 方法中,点击了哪个 Button?

public void onClick(View v) {
    // TODO Auto-generated method stub

}

也许我应该说我在编程方面真的很新。

4

5 回答 5

1

您可以为添加的所有按钮设置标签,在 onClick 中您可以执行 v.getTag() 之类的操作来检查单击了哪个按钮。

于 2013-05-27T12:39:14.930 回答
1

您可以使用方法存储任何附加信息setTag()/getTag()

myButtons.get(i).setTag(id);

listener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        doAction(v.getTag());
    }
};
于 2013-05-27T12:39:53.663 回答
1

在将 Button 添加到列表之前,请设置如下标签:

Button button = new Button(this);
button.setOnClickListener(this);
button.setLayoutParams(params);
button.setTag(i);

然后可以通过以下方式检索索引:

int index = (Integer) button.getTag();
于 2013-05-27T12:40:02.837 回答
0

为每个按钮 id 设置,例如:

...
Button button= new Button(this);
temp.sedId(i);
temp.setOnClickListener(this);
myButtons.add(button);
...

然后onClick对单击的按钮做出反应,例如:

public void onClick(View v) {
    switch(v.getId()) {
    ...
    case 17:
        //Some action
        break;
    }
}
于 2013-05-27T12:44:10.610 回答
0

OnClickListener在您的活动中实现接口。button.setId(id)用于为每个按钮设置 Id。尝试以下代码

@Override
public void onClick(View v) {

    switch (v.getId()) {
        case R.id.button1:

            break;

        case R.id.button2:


            break;

        case R.id.button3:

            break;


        default:
            break;
    }

}
于 2013-05-27T12:44:38.477 回答