본문 바로가기
Android

[깡샘의 안드로이드 프로그래밍] 정리 19 - RecyclerView

by 들풀민들레 2018. 1. 5.
본 글은 [깡샘의 안드로이드 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책을 통해 확인해 주세요.

 

 

 

 

 

 

17장. Support 라이브러리 활용

 

17.3.1. RecyclerView 소개

 

 

이번에는 RecyclerView에 대해 살펴보겠습니다. RecyclerView는 API Level 21(Android 5.0)이 나오면서 support:recyclerView-v7 라이브러리로 제공된 클래스입니다. 표준 라이브러리의 뷰가 아니며, RecyclerView를 위한 라이브러리가 따로 제공된 형태입니다. 따라서 RecyclerView를

사용하려면 다음처럼 그레이들 파일에 dependency를 명시해야 합니다.

 

implementation 'com.android.support:recyclerview-v7:26.0.1'

 

RecyclerView로 만들고자 하는 화면은 우리가 이미 살펴보았던 ListView와 같은 목록 화면입니다.

그렇다면 RecyclerView와 ListView는 목적이 같다고 할 수 있을까요? 그렇습니다. 모두 목록 화면을 구성하기 위해 제공되고 있습니다. 그렇다면 표준 라이브러리에서 제공되고 오랫동안 많이 이용되던 ListView가 있는데, 왜 RecyclerView를, 그것도 support 라이브러리로 추가해서 제공하는 것일까요?

그건 ListView의 한계 때문입니다. ListView가 좋은 뷰이고 이용 비율도 높지만 목록 화면을 구성하는 데 한계도 명확하다 보니, 다양한 목록 화면 구성을 지원하기 위해 RecyclerView를 추가로 제공한다고 생각하면 될 것 같습니다. 우선 예를 들어 볼까요?

 

 

그림 17-21은 전화 앱의 로그 화면입니다. 데이터를 목록으로 꾸미는 화면이지요. 각 항목이 이미지와 문자열 데이터로 나열되고 항목 선택 이벤트와 전화기 아이콘에 클릭 이벤트를 제공합니다. 

이 정도는 ListView로도 만들 수 있습니다. 그런데 각 항목이 가로 방향 전체를 차지하는 게 아니라 네 방향 여백이 있고, 음영으로 처리해서 위에 떠 있는 듯 효과를 냈습니다. 그리고 전체 항목이 단순 나열된 형태가 아니라 시간별로 구분하여 중간에 Sub Header("어제", "이전" 문자열)가 출력된 형태입니다.

ListView로 위의 화면을 똑같이 만들어야 한다면 답이 안 나오지요. 불가능하거나 너무 어렵거나 할 겁니다. 그런데 RecyclerView로는 쉽게 만들어 낼 수 있습니다.

 

우선 RecyclerView를 이해하기 위해 구조를 먼저 살펴보겠습니다.

 

 

ListView의 경우 ListView와 Adapter의 구조로 화면을 완성하는 뷰입니다. 그런데 RecyclerView는 구성요소가 좀 많습니다. RecyclerView도 AdapterView이므로 Adapter가 필요한데요. Adapter 이외에 LayoutManager, ViewHolder, ItemDecoration, ItemAnimation 클래스 등을 활용하여 다양한 항목을 나열하는 화면을 만드는 구조입니다.

 

  • Adapter: RecyclerView 항목 구성
  • ViewHolder: 각 항목 구성 뷰의 재활용을 목적으로V iew Holder 역할
  • LayoutManager : 항목의 배치
  • ItemDecoration: 항목 꾸미기
  • ItemAnimation: 아이템이 추가, 제거, 정렬될 때의 애니메이션 처리

 

RecyclerView를 이용하여 화면을 구성할 때 Adapter, ViewHolder, LayoutManager 클래스는 필수 구성요소이며, ItemDecoration, ItemAnimation 클래스는 추가 구성요소입니다.