1. RecyclerView란?
위의 그림을 보면 리사이클러뷰를 이해하는데 구조를 조금은 쉽게 이해할 수 있다.
과거에는 리스트뷰(ListView)를 많이 사용했지만, 현재는 리사이클러뷰(RecyclerView)를 많이 사용한다.
-> 데이터의 수만큼 뷰그룹을 생성해서 표시해주는 리스트뷰와는 달리, 화면에 표현가능한 범위만큼 뷰를 생성해서 재활용하여 리스트로 표시해주는 위젯.
2. 왜 리사이클러 뷰일까?
- 리스트뷰(ListView)의 문제점 중 하나는 리스트의 항목이 갱신될 때마다 아이템뷰를 매번 새로 생성해야한다는 점이 있었다.
(-> 이는 곧 성능의 저하로 이어질 수 있다.)
-이런 리스트뷰의 단점을 고려하여, 리사이클러뷰는 아이템을 표시하기 위해 생성한 뷰를 재활용(Recycle)함.
-그리고 이를 위해 기본적으로 뷰홀더 패턴을 사용하도록 만들어 놓음.
-또한 안드로이드 공식문서에서는 리사이클러뷰의 장점으로 유연함(Flexibility)을 강조함.
-유연함이란, 구현요소 또는 구현에 따른 결과물이 쉽게 변경되거나 확장될 수 있음을 의미함.
3. 어떻게 구현할까?
먼저 리사이클러뷰를 구현하기 위해서는 어댑터와 뷰홀더가 반드시 필요하다.
과거 리스트뷰에서는 안드로이드 SDK에서 제공되는 몇 가지 어댑터 중 하나를 선택하거나, 필요한 경우 BaseAdapter 클래스를 상속받아 새로운 어댑터를 만들었다.
하지만 리사이클러뷰에서는 반드시 개발자가 어댑터를 직접 구현해야한다.
새로 만들때에는 RecyclerView.Adapter를 상속받아 구현해야 한다.
어댑터는 표시될 데이터 리스트와 아이템 레이아웃을 연결한다.
어댑터를 만들기 위해서는 아래 3가지의 메서드를 구현해야 한다.
이휴에는 뷰홀더를 만들어야 한다.
뷰홀더는 아이템 레이아웃을 담는 그릇이다.
화면에 보이는 아이템 레이아웃의 개수만큼 생성되고 새로 그려야 할 아이템 레이아웃(스크롤 동작)이 있다면 맨위의 뷰홀더를 재사용해서 데이터만 바꿔준다.
이를 통해 자원낭비를 방지하고, 앱의 효율을 향상시킨다.
어댑터까지 완성이 되면, 액티비티 클래스(뷰)에서 앞서 만든 데이터를 binding해서 해당 화면을 완성한다.
추가적으로 수정사항/ 궁금하신 점이 있다면 댓글 남겨주시면 확인후에 답변드리겠습니다!
감사합니다 즐코하세요!! :)
참고 블로그 - https://recipes4dev.tistory.com/154
안드로이드 개발자 사이트 - https://developer.android.com/reference/android/support/v7/widget/RecyclerView