如何为同一布局中的多个按钮设置全局点击监听器?

How to have a global click Listener for multiple buttons in the same layout?

假设我们在一个布局中有 50 个按钮,而不是为每个按钮创建点击侦听器。

例如:

 button1.setOnClickListener(this);
 button2.setOnClickListener(this);

如果我们有 50 个像这样的按钮,将会有很多过时软件代码。

还有其他有效的方法吗?

您可以在设置布局后循环视图子项,因此,假设这些按钮都是主视图的子项,然后循环所有视图子项,然后检查 Button 实例并分配您的侦听器。

我的理解是否正确,您希望所有按钮都具有相同的 clickListener?如果是,那么您可以创建自己的按钮来扩展 Android 按钮 class,并在那里初始化 clickListener。

class MyButton(context: Context,...) : android.widget.Button(context,...) {

    init {
        this.setOnClickListener {
            ....
        }
    }
}

然后,在您的布局中,使用 MyButton 而不是 android.widget.Button