使用连接多个视图的单个手势检测器获得双 tapped/touched 视图

Get double tapped/touched View using a single Gesture Detector with multiple Views connected

我使用一个带有多个视图的手势检测器。我不确定这是否是最好的方法,但是为每个视图提供自己的手势检测器会使我的代码变得非常大。现在,如果我双击我的一个视图,我想检查哪个视图被双击。无法弄清楚如何:(。我将所有视图连接到同一个手势检测器的原因是因为它们在双击时都需要做同样的事情。

我在互联网上搜索过,但找不到任何有用的信息。我希望我的代码能让一切更清晰。

implements View.OnTouchListener, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener

gestureDetector = new GestureDetector(this, this);

textView1.setOnTouchListener(this);
textView2.setOnTouchListener(this);
textView3.setOnTouchListener(this);
textView4.setOnTouchListener(this);
textView5.setOnTouchListener(this);
textView6.setOnTouchListener(this);

@Override
public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}

public boolean onDoubleTap(MotionEvent e) {
    editMode();
    //Get tapped View
    return false;
}

我想在 onDoubleTap() 中看到一个输出;喜欢:当前双击视图是:(我的文本视图之一)。我还发现,如果我先点击 textView1,然后点击 textView2,onDoubleTap();将被触发。这意味着,如果答案选择最后被点击的视图,那就太好了。希望有人能帮忙:D

好吧,我现在觉得自己很蠢,但我找到了答案。我只需要创建一个变量并将其设置在 OnTouch() 中。

@Override
public boolean onTouch(View v, MotionEvent event) {
   //Get id of touched View
   getViewByID = v.getId();
   return gestureDetector.onTouchEvent(event);
}

然后我可以随心所欲地使用这个变量。

if (getViewByID == R.id...) {
   //Change text for example
}