마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ListView의 item에 onTouchEvent, onClick, onLongClick을 동시에 적용시키는 방법을 모르겠습니다.

0 추천
제가 안드로이드 스튜디오를 기본서를 가지고 공부를 하였는데 실질적으로 어플을 만들려고 하니 기본서 만으로는 모르는 것이 많아서 기초적인 어플 하나를 가지고 단계를 적용하여 만드는 연습을 하고 있습니다.
기초적인 어플로 단순한 메모장 어플을 만들고 있는데
여기서 listview를 사용하여 메모로 추가한 것을 보여주고 있습니다.

리스트 뷰의 내용은  LinearLayout 을 상속받는 item 클래스가 들어가게 됩니다.
이 아이템 클래스에 text 뷰 안에 메모 내용이 들어가고요.

여기서 제가 구현하고 싶은 것은 아이템 뷰(메모내용)을 클릭(onclick) 했을 때,  수정 창이 뜨게 하고, 길게 클릭했을 때나(onLongClick) 옆으로 슬라이드(onTouch)했을 때(스와이프) 했을 때 삭제 버튼이 나오게 하는 것을 구현하고 있습니다.

현재 onTouchEvent는 리니어 레이아웃을 상속한 item 클래스 안에 있고, onClick이나, onLongClick 은 listview를 가지고 있는 MainActivity에서 listview.setOnClickListener, listview.setOnLongClickListener로 구현을 하였습니다.

구글링을 어느정도 해본 결과, onTouchEvent에서 반환값을 [True로 하면 현재 이벤트에서 종료, False로 하면 현재 이벤트를 마무리하고 다음 이벤트로 넘어감] 이라는 것을 보고 이를 적용 시켜 봤는데, True로 설정할 경우 onTouch는 동작을 하는데 onClick이나 onLongClick이 동작하지 않고, False로 하면 onClick이나 onLongClick이 동작을 하고 onTouch가 동작을 하지 않습니다.

이게 터치, 클릭, 롱클릭을 따로 놔서 그런가요?
TuTanKhamen (170 포인트) 님이 2016년 2월 4일 질문

1개의 답변

0 추천
 
채택된 답변
예상하신데로 클릭리스너와 터치 리스너는 같이 쓰일수 없습니다.

클릭리스너 또한 터치 리스너의 확장이기때문입니다.

전부 같이 쓰시려면 터치리스너 안에서 이벤트를 캐치하여 클릭과 롱클릭을 직접 구현 해주셔야 합니다.
ThisPlus (46,920 포인트) 님이 2016년 2월 5일 답변
TuTanKhamen님이 2016년 2월 5일 채택됨
...