Получите двойное касание / касание View с помощью одного детектора жестов с несколькими подключенными Views

Я использую один детектор жестов с несколькими прикрепленными представлениями. Я не уверен, что это лучший способ сделать это, но предоставление каждому представлению собственного детектора жестов делает мой код очень большим. Теперь я хочу проверить, какой вид дважды нажимается, если я дважды нажимаю на один из своих представлений. Не могу понять, как :(. Причина, по которой я подключаю все представления к одному и тому же детектору жестов, заключается в том, что все они должны делать одно и то же при двойном нажатии.

Я искал в Интернете, но не могу найти ничего полезного. Я надеюсь, что мой код сделает все более понятным.

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


person Allart    schedule 03.06.2019    source источник


Ответы (1)


Хорошо, я чувствую себя глупо прямо сейчас, но я нашел ответ. Мне просто нужно создать переменную и установить ее в 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
}
person Allart    schedule 08.06.2019