如何让6个按钮在Android中使用不同的参数调用相同的方法?

时间:2017-02-09 20:09:23

标签: java android view onclick onclicklistener

无论我是以编程方式还是在xml文件中设置onClick方法,我都不知道如何通过它传递额外的参数。在以下代码中:

    for (int i = 0; i < 6; i++) {
        rollView[i].setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                changeKeepRoll(i);
            }
        });
    }

我为6个不同的onClickListener设置TextView,我想调用以整数参数作为输入的方法changeKeepRoll,但是我得到了错误&#39;变量&#39;我&#39;从内部类中访问,需要声明最终&#39;。这意味着什么,我该如何纠正它?

3 个答案:

答案 0 :(得分:2)

  for (int i = 0; i < 6; i++) {
        final int temp = i;
        rollView[i].setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            changeKeepRoll(temp);
        }
    });
  }

答案 1 :(得分:1)

实现OnClickListener类并使用不同的参数集重载方法

public class myClass implements View.OnClickListener {
int changeKeepRoll;
    @Override
    public void onClick(View v) {

    }

    public void onClick(int i) {

    }
}

将changeKeepRoll变量置于方法范围之外或使其成为最终。

答案 2 :(得分:1)

您可以通过实现接口将参数传递给OnClickListener

class MyOnClickListener implements OnClickListener {

    private int i;

    public MyOnClickListener(int i) {
        this.i = i;
    } 

    public void onClick(View view) {
        changeKeepRoll(i);
    }
}

并且,您的for循环将如下所示:

for(int i = 0; i < rollView.length; i ++) {
    rollView[i].setOnClickListener(new MyOnClickListener(i));
}

之前有人问过: How to pass parameters to OnClickListener?

希望这有帮助, 巴拉