android setOnClickListener一次可点击多个按钮
我有三个ID为b00、b01、b02的按钮,当它们被长时间单击时,我希望它们都执行相同的操作。有比这更好的方法吗android setOnClickListener一次可点击多个按钮,android,onlongclicklistener,Android,Onlongclicklistener,我有三个ID为b00、b01、b02的按钮,当它们被长时间单击时,我希望它们都执行相同的操作。有比这更好的方法吗 b00.setOnLongClickListener { //code true } b01.setOnLongClickListener { //same code true } b02.setOnLongClickListener { //same code true }
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@Edwardclass MainActivity:AppCompatActivity(),View.OnLongClickListener{}