2012-07-31 6 views
6

środowiska: Mam Android ListView z wierszy, które składają się z TextView zawierających niektóre HTML z tappable linków (URLSpans). Na liście ListView ustawiłem OnItemLongClickListener do nasłuchiwania zdarzeń o długich kliknięciach w poszczególnych wierszach.ListView onItemLongClickListener nie przeszkadza odnośnik krany

Cel: Kiedy otrzymam długo zdarzenie click, Chcę wyłączyć krany na linki do tego samego zdarzenia dotykowego, ale nie widzę w jaki sposób to zrobić. Długie kliknięcie wystrzeliwuje poprawnie, ale zaraz po podniesieniu palca zacznie się również dzwonek łączący.

Co Próbowałem już: Próbowałem powrocie prawdziwe (i false) na metodzie onItemLongClick - nie wydaje się, aby różnica w obu kierunkach. Po długim kliknięciu próbowałem przechwycić numer MotionEvent.ACTION_UP, aby móc tymczasowo pobierać kliknięcie linku, ale ACTION_UP nie uruchamia się - przynajmniej nie w przypadku ListView.

Odpowiedz

1

zrobiłem trochę więcej poszukiwania i znalazłem to odpowiedź na podobne pytanie: Android TextView Linkify intercepts with parent View gestures

użyłem pojęcia z tej odpowiedzi, aby rozwiązać mój problem. Rozszerzyłem klasę TextView i przejąłem onTouchEvent i sprawdzam, czy klikam link w przypadku zdarzeń dotyku. Jeśli tak, zapiszę ten link i "kliknę" go programowo na moim ListView.onItemClick, jeśli najpierw nie napotkam numeru LongClick. Fuj.

Jeśli ktoś ma bardziej elegancki sposób na rozwiązanie problemu, opublikuj go, a ja przyjmuję odpowiedź, jeśli zadziała. Jeśli nie, przyjmuję moją własną odpowiedź za kilka dni.

Powiązane problemy