我在Android上处理动态创建的按钮时遇到问题。我正在创建N个按钮,单击按钮时必须执行相同的方法,但是我必须知道单击了哪个按钮。

for (int i = 0; i < NO_BUTTONS; i++){
        Button btn = new Button(this);
        btn.setId(2000+i);

        ...

        btn.setOnClickListener((OnClickListener) this);
        buttonList.addView(btn);
        list.add(btn);

目前,我正在向每个按钮添加ID,然后使用下面的方法查看单击了哪个按钮。 (btn.setId(2000+i);btn.setOnClickListener((OnClickListener) this);行)。 Activity 中也实现了此方法。
@Override
public void onClick(View v) {
    switch (v.getId()){
        case 2000: selectButton(0);
        break;

        ...

        case 2007: selectButton(7);
        break;
    }
 }

这对我来说看起来不太好,所以我问是否有更好的方法可以做到这一点?或如何向onclick事件发送一些信息?有什么建议?

最佳答案

您可以创建一个返回onclickListener并将按钮作为参数的方法。然后使用该方法在您拥有的第一个循环中设置onClicklistener。

更新:代码可能如下:

View.OnClickListener getOnClickDoSomething(final Button button)  {
    return new View.OnClickListener() {
        public void onClick(View v) {
            button.setText("text now set.. ");
        }
    };
}

作为 Activity 中的一种方法,然后像这样在循环中使用它
button.setOnClickListener(getOnClickDoSomething(button));

10-07 19:34
查看更多