Java - 具有多个onClickListener的高效方法

标签 java android loops onclicklistener

我的应用程序当前有 5 个按钮(稍后我将添加更多按钮),单击每个按钮时,它都会为一个项目分配一个编号。

我想知道是否有一种更有效的方法来编写 setOnClickListner (似乎我必须使用它,因为我将其用作 fragment 。如果我要分配 onClick,我找到了一种方法来做到这一点在 xml 中,但我无法将其应用于这部分代码)。我已经写了5次了(以后会更多)

    buttons[0] = (Button) view.findViewById(R.id.cut1Btn);
    buttons[1] = (Button) view.findViewById(R.id.cut2Btn);
    buttons[2] = (Button) view.findViewById(R.id.cut3Btn);
    buttons[3] = (Button) view.findViewById(R.id.cut4Btn);
    buttons[4] = (Button) view.findViewById(R.id.cut5Btn);

    buttons[0].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getActivity(), "TESTING BUTTON CLICK 1",Toast.LENGTH_SHORT).show();
            data = 1;
        }
    });

    buttons[1].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getActivity(), "TESTING BUTTON CLICK 2",Toast.LENGTH_SHORT).show();
            data = 2;
        }
    });

    buttons[2].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getActivity(), "TESTING BUTTON CLICK 3",Toast.LENGTH_SHORT).show();
            data = 3;
        }
    });

    buttons[3].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getActivity(), "TESTING BUTTON CLICK 4",Toast.LENGTH_SHORT).show();
            data = 4;
        }
    });

    buttons[4].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getActivity(), "TESTING BUTTON CLICK 5",Toast.LENGTH_SHORT).show();
            data = 5;
        }
    });

我可以做一个开关或循环吗?就像为按钮数组分配 i = 0, i < 5, i++ 一样,然后为数据分配 data = i + 1 ?如果是这样,对我如何做到这一点有什么建议吗?

谢谢!

最佳答案

这里的其他答案也可以,但是要么使用标签(通常是一个坏主意并阻止任何其他使用)并且不是真正面向对象的。相反,您应该创建一个类并实例化它。

private class MyClickListener {
  private int data;
  public MyClickListener(int data) {
     this.data = data;
  } 
  public void onClick(View view) {
      Toast.makeText(getActivity(), "TESTING BUTTON CLICK" + data,Toast.LENGTH_SHORT).show();
  }
}

...

int i=0;
for(Button button : buttons) {
  button.setOnClickListener(new MyClickListener(i++));
}

关于Java - 具有多个onClickListener的高效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45025022/

相关文章:

Python:检查哪个元组项字符串以1结尾(如果它以1结尾)

java - Hibernate:父子关系数据结构

java - 使用 simpledateformat 将日期转换为字符串

java - 与 shell 模式 'test/*' 对应的 Java 正则表达式是什么?

android - 更新 Android 中方向变化的进度条

Android-更改 NumberPicker 步数或增量

python - 读取文件python中的前一行

python-3.x - 循环将多个列表附加到数据帧python中

java - 如何检查数组中的所有值是否都具有特定值?

java - 当我使用sqlite运行android程序时如何防止重复行