这可能是一个菜鸟问题,但我对Kotlin还是陌生的。我正在为几个视图创建一个手势检测器,并希望将视图传递给侦听器,甚至更好地将其传递给自定义参数。
我的代码:
val gestureDetector = GestureDetector(this@EditProfileActivity, object : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
Log.d("myApp", "single tap confirmed press")
}
})
profilePic1.setOnTouchListener { view, event -> gestureDetector.onTouchEvent(event) }
profilePic2.setOnTouchListener { view, event -> gestureDetector.onTouchEvent(event) }
我要将相同的侦听器附加到不同的视图,并希望有一种方法来区分覆盖函数中的视图。如何在这些函数中获取视图,此外还可以传递自定义参数,例如Int
此外,我尝试创建自定义的gestureDetector,但是由于我添加了自定义位置自变量,尽管我正在创建自定义检测器,但我收到一个错误:“以下任何一个函数都不能使用提供的自变量调用”所以我不明白为什么它不起作用:
class detector (context: Context?, listener: GestureDetector, handler: Handler, unused: Boolean, val position: Int )
: GestureDetector(this@EditProfileActivity, GestureDetector.SimpleOnGestureListener(), null, false, position ) {
答案 0 :(得分:0)
所以我确实找到了解决方案,也许可以使其他人受益。我不确定创建多个手势检测器是否理想,尽管它们都直接指向同一类:
val gesture1 = GestureDetector(this@EditProfileActivity, GestureListener(1))
profilePic1.setOnTouchListener { view, event -> gesture1.onTouchEvent(event) }
val gesture2 = GestureDetector(this@EditProfileActivity, GestureListener(2))
profilePic2.setOnTouchListener { view, event -> gesture2.onTouchEvent(event) }
class GestureListener (val position: Int) : GestureDetector.SimpleOnGestureListener() {
override fun onDoubleTap(e: MotionEvent?): Boolean {
Log.d("HAVERI", position.toString())
return super.onDoubleTap(e)
}
}