java - 如何缩短类似按钮的 findViewById 和 setOnClickListener ?

标签 java android

如果你有很多类似用途的按钮,有没有办法缩短代码? 必须有办法,但我还没有足够的经验来提出不同的解决方案。 以下面的代码为例:

    btn_0 = findViewById(R.id.btn_0);
    btn_1 = findViewById(R.id.btn_1);
    btn_2 = findViewById(R.id.btn_2);
    btn_3 = findViewById(R.id.btn_3);
    btn_4 = findViewById(R.id.btn_4);
    btn_5 = findViewById(R.id.btn_5);

    btn_0.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_input.setText("0");
            function();
        }
    });

    btn_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_input.setText("1");
            function();
        }
    });

    btn_2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_input.setText("2");
            function();
        }
    });

    btn_3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_input.setText("3");
            function();
        }
    });

    btn_4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_input.setText("4");
            function();
        }
    });

    btn_5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_input.setText("5");
            function();
        }
    });

有哪些选项可以更有效地编写并且减少重复代码?我见过这样的选项,但是我不知道它实际上是如何工作的:

    private Button[] btns = new Button[4];

for (int i = 0; i < 4; i++) {
    this.btns[i] = super.findViewById(new int[]{R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4}[i]);
}

如果您想出一个解决方案,我真的很感激您能简短地解释一下为什么这种方法有效。感谢您的努力:)

最佳答案

如果您只是想避免 DRY(不要重复自己)原则,您可以在函数中创建监听器并传递 text 参数,例如:

View.OnClickListener createOnClickListener(String text) {
  new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_input.setText(text);
            function();
        }
    }
}

用法示例

btn_4.setOnClickListener(createOnClickListener("4"))

关于java - 如何缩短类似按钮的 findViewById 和 setOnClickListener ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65410592/

相关文章:

java - 代码移至 CloudHub 时无法找到文件

android - 如何在 Android 中播放在线流媒体广播

java - 创建文件并将其写入 SD 卡...出现文件未找到异常

android - 将图像动态转换为二进制,反之亦然

Java Qpid Proton - ActiveMQ 代理无法分配请求的地址 : bind

java - 如何在 Ubuntu 上使用 Mina 增加可用套接字?

Java- JTextPane 中的 "Circular"选择?

java - 在 mapstruct 中使用构建器(使用不可变注释处理器)将对象映射到不可变对象(immutable对象)

java - SimpleAdapter 不起作用

android - 通过 USB : The device is temporarily restricted 安装应用程序