오늘도 배우자!

귀찮음에 배움을 멀리하지 않기를...

Develop/Android

RecyclerView를 사용해보자아(2)

리다양 2017. 2. 26. 21:31

써야지 써야지 하고 다른 일을 하느라 조금 늦었다...

오늘 이 시간에는 RecylcerView의 View를 구현하기는 했는데 ListView 처럼 Item Click Event를 어떻게 핸들링하는지 다루어 보도록 하겠다~!!!

이번 내용은 도움이 많이 될 것 이다. 꿀이거든 꿀...


늘 그래왔듯이 중요한 점을 키워드로 정리를 하자!!

Item 을 누르는 행위는 크게 Click 과 Touch 2가지로 분류된다.  구별이 잘 안가는 사람을 위해 조금 설명을 하자면

Click은 손을 눌렀다가 뗄 때 인지되는 것이고, Touch는 누를 때, 뗄 때 모두 인지되는 것이다.


RecyclerView에서 항목(Item)을 클릭하거나 터치하여 게시판처럼 다른 Activity로 넘어가거나 어떤 것을 눌렀는지 Toast를 띄우기 위해서는

두가지의 방법이 존재한다.

(1) RecyclerView.OnItemTouchListener 사용

(2) ItemClickSupport Class 작성


그리고 Item 안의 Event를 핸들링 해야 할 경우, 즉, 항목별로 버튼이 달려있어서 거기에도 아이템 리스너 말고 따로 리스너를 달아줘야

할 경우 Adapter 구현 할 때, OnBindViewHolder에서 이벤트 핸들러를 달고싶은 Component(Button이나, TextView 같은...)에 OnClickListener와 같은

리스너를 달아주면 된다.


정확한건 코드를 보면서 설명을 시작해야겠지...


1. RecyclerView.OnItemTouchListener 사용하기


 요녀석을 구현하기 위해서 다시 2가지가 필요한데 GestureDetector라는 녀석과,  RecyclerView.OnItemTouchListener를 커스터마이징 한 녀석이다.

 그럼 시작해보자.


 1) GestureDetector


  이녀석이 필요한 이유는 Touch의 개념이 누를 때, 뗄 때 모두 인식이 되는 것 때문이다.

  아이템을 클릭하는 이벤트를 처리하기 위해서 누를 때는 인식하지 않다가 뗄 때 한번만 인식하게 만들어     주려고 GestureDetector를 사용하는것이다.

  

  요렇게 구현을 해주고, 나중에 RecyclerView.OnItemTouchListener에서 사용할꺼기 때문에 onCreate()문 위   에 변수 선언하는 공간에다가

  private GestureDetector gestureDetector; 이렇게 먼저 선언하고 onCreate()문 안에서 위와 같은 코드로     초기화 해두면 된다.


 2) RecyclerView.OnItemTouchListener 커스터마이징


  이녀석이 하는 역할은 터치 이벤트가 발생하면 -> RecyclerView 안에서 발생한 터치 이벤트를 Intercept      -> 어떤 아이템을 터치했는지, 어떤 작업을 수행 할 것 인지 정의하고 -> 정의된 대로 작업을 수행하는 것   이다.

 코드를 한번 살펴보자.


 


  주석을 보면 대략 어떤 로직으로 구성이 되었는지 알 수 있을 것 이다~!!!!!!!

  그리고 RecyclerView를 초기화 할때 이 리스너를 달아주면 구현의 끝이다.


  


2. ItemClickSupport Class 작성


 요거는 내가 즐겨보는 Code Path라는 사이트(https://guides.codepath.com/android/using-the-recyclerview#attaching-click-handlers-to-items)를 참고

 해서 알게되었다.

 쓰는 방법은 ItemClickSupport Class 작성 -> RecyclerView 초기화하는 부분에서 ItemClickSupport Class를 통해서 OnItemClickListener를 구현해서

 setOnItemClickListener를 이용하여 리스너를 달아주면 끝이다.


 1) ItemClickSupport Class


  

  요거를 Class를 하나 새로 파서 복 to the 붙 해줘.. 그냥 복붙하면 돼...


  2) RecyClerView 초기화 부분에서 리스너 구현


  

  요렇게 달아주고 내가 원하는 리스너를 커스터마이징 하면 끝이다...

  Click, LongClick 모두 설정 할 수 있으니까 아주 좋은 것이지...


요렇게 하믄!!!! Item 클릭 했을 때의 이벤트를 모두 처리 할 수 있게 되었고..


요기 위에 처럼 저렇게 아이템별로 버튼이 있어서 저 버튼에 따로 이벤트를 달아줘야 하는 경우가 생기는데 이것은 RecyclerView.Adapter 커스터마이징 한 곳에 OnBindViewHolder 부분에 처리를 해주면된다.


아래의 코드를 보면서 이해를 해보도록 하잣~!!


3. 아이템 속 Component 이벤트 처리하기



요기 보믄 OnBindViewHolder에서 OnClickListener를 통해서 버튼에 리스너를 달아준 것이 보이는가아~!! 요렇게 하믄대... 딱 느낌이 오지??? 그래 그럴 것 이야...

'Develop > Android' 카테고리의 다른 글

RecyclerView를 사용해보자아(1)  (0) 2017.02.21
JSON 개념 이해  (0) 2017.02.11
OkHttp 사용법  (0) 2017.02.09
카카오톡 로그인 API를 사용해보자아(3)  (6) 2017.02.07
카카오톡 로그인 API를 사용해보자아(2)  (0) 2017.02.06