android setOnClickListener一次可点击多个按钮

android setOnClickListener一次可点击多个按钮,android,onlongclicklistener,Android,Onlongclicklistener,我有三个ID为b00、b01、b02的按钮,当它们被长时间单击时,我希望它们都执行相同的操作。有比这更好的方法吗 b00.setOnLongClickListener { //code true } b01.setOnLongClickListener { //same code true } b02.setOnLongClickListener { //same code true }

我有三个ID为b00、b01、b02的按钮,当它们被长时间单击时,我希望它们都执行相同的操作。有比这更好的方法吗

b00.setOnLongClickListener {
        //code
         true
}

b01.setOnLongClickListener {
         //same code
         true
}

b02.setOnLongClickListener {
        //same code
        true
}
您可以这样做:

    /...

    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
}
您可以这样做:

    /...

    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
}

按照您的示例,我假设您使用的是Kotlin

在编程中,尽量保持简单易懂,不要重复

因为对于
OnLongClickListener
您需要返回您使用事件的
Boolean
,我建议添加函数

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() } }

按照您的示例,我假设您使用的是Kotlin

在编程中,尽量保持简单易懂,不要重复

因为对于
OnLongClickListener
您需要返回您使用事件的
Boolean
,我建议添加函数

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() } }

我喜欢这个想法,但它告诉我,覆盖并不是覆盖任何东西。而且它不喜欢这个作为一个parameter@Edward确保您实现了查看。OnLongClickListener我确信这很明显,但您会怎么做that@Edward
class MainActivity:AppCompatActivity(),View.OnLongClickListener{}
我喜欢这个想法,但它告诉我覆盖并不是覆盖任何东西。而且它不喜欢这个作为一个parameter@Edward确保您实现了查看。OnLongClickListener我确信这很明显,但您会怎么做that@Edward
class MainActivity:AppCompatActivity(),View.OnLongClickListener{}