Android 如何将视图或自定义参数传递给GestureDetector?

Android 如何将视图或自定义参数传递给GestureDetector?,android,kotlin,gesturedetector,Android,Kotlin,Gesturedetector,这可能是一个noob问题,但我对Kotlin还是新手。我正在为一些视图创建一个手势检测器,并希望将该视图传递给侦听器,或者更好地传递一个自定义参数 我的代码: val gestureDetector = GestureDetector(this@EditProfileActivity, object : GestureDetector.SimpleOnGestureListener() { override fun onSingleTapConfirmed(e: MotionEvent?

这可能是一个noob问题,但我对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 ) {

所以我确实找到了一个解决办法,也许它能让其他人受益。我不确定创建多个手势检测器是否理想,尽管它们都指向同一个类:

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

创建您自己的扩展GestureDetector的类,并在类构造函数中为其提供视图或使用生成器模式。感谢Ahmad,我尝试实现一个扩展GestureDetector的自定义类,但它仍然不起作用,请您看一看?我编辑了我的问题以包含代码什么不起作用?发布日志。我得到错误“无法使用提供的参数调用以下函数”,因为我添加了位置:Int,并且它不应包含在GestureDetector中,但是我不明白为什么它不起作用,因为我用一个自定义类来扩展它,发布这个类以及您在问题中是如何实例化的。不要在下面的答案中更新它。