我有三个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
}
[按照您的示例,我假设您正在使用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() } }