android setOnClickListener一次多个按钮

问题描述 投票:0回答:2

我有三个ID为b00,b01,b02的按钮,只要长按它们,我都希望它们做同样的事情。有没有比

更好的方法了?
b00.setOnLongClickListener {
        //code
         true
}

b01.setOnLongClickListener {
         //same code
         true
}

b02.setOnLongClickListener {
        //same code
        true
}
android onlongclicklistener
2个回答
0
投票

您可以这样做:

b00.setOnLongClickListener(this)
b01.setOnLongClickListener(this)
b02.setOnLongClickListener(this)


//...


override fun onLongClick(v: View?): Boolean {
    var id = v?.id
    if ((id == b00.id) or (id == b01.id) or (id == b02.id)) {
        //your code
        return true
    }
    return false
}

0
投票

[按照您的示例,我假设您正在使用Kotlin。

在编程中,请尽量使其简单易懂。

由于OnLongClickListener,您需要返回消耗事件的Boolean,因此建议添加inline函数

inline fun consumeEvent(function: () -> Unit): Boolean {
    function()
    return true
}

然后,将通用代码从侦听器移至新功能,例如fun myFunction()并调用它。

fun myFunction() {
    // some code
}

b00.setOnLongClickListener { consumeEvent { myFunction() } }
b01.setOnLongClickListener { consumeEvent { myFunction() } }
b02.setOnLongClickListener { consumeEvent { myFunction() } }
© www.soinside.com 2019 - 2024. All rights reserved.