기술(Tech, IT)/안드로이드(Android)

[Android] RecyclerView (리싸이클러 뷰) - 1

Daniel803 2024. 9. 27. 01:45

RecyclerView는 안드로이드용 ListView의 보다 고급스럽고 유연한 버전이다. 안드로이드 지원 라이브러리의 일부이며 스크롤 가능한 목록 또는 Grid 형식으로 아이템의 대용량 데이터 세트를 효율적으로 표시하도록 설계되었다. 다음은 RecyclerView의 주요 기능에 대한 분석이다.

 

주요 기능

  1. View Recycling (재활용 보기)
    : RecyclerView는 더 이상 표시되지 않는 아이템 보기를 재사용(재활용) 하여 생성되는 View의 수를 줄인다. View가 화면에서 사라지면 처음부터 새 View를 만드는 대신 새 데이터에 재사용되므로 성능이 향상된다.
  2. Layout Managers (레이아웃 관리자)
    : RecyclerView는 아이템 배치 방식에 유연성을 제공한다.
    1. 세로 또는 가로 목록의 경우 LinearLayoutManager
    2. Grid view에는 GridLayoutManager
    3. 다양한 아이템 높이 또는 너비가 있는 Grid에는 StaggeredGridLayoutManager를 사용할 수 있다.
    4. 사용자 지정 Layout Manager를 만들어 고유한 레이아웃을 정의할 수도 있다.
  3. ViewHolder Pattern (뷰홀더 패턴) 
    : ViewHolder Pattern은 아이템 references에 대한 참조를 저장하여 findViewById에 대한 반복 호출을 줄임으로써 성능을 개선하는 데 도움이 된다. 이 패턴은 RecyclerView의 디자인에 필수적인 요소다.
  4. Item Animations (아이템 애니메이션)
    : RecyclerView는 아이템 추가, 제거 및 업데이트를 위한 기본 애니메이션을 지원한다. 이러한 작업에 대한 사용자 지정 애니메이션을 정의할 수도 있다.
  5. Item Decoration (아이템 장식)
    : 아이템 사이에 사용자 지정 장식 (예: divider, margin 또는 hilight)를 사용할 수 있다. 이러한 데코레이션은 RecyclerView.ItemDecoration을 확장하여 정의할 수 있다.
  6. Extensibility (확장성)
    : RecyclerView.Adapter와 RecyclerView.ViewHolder를 확장하여 자신만의 사용자 지정 동작을 만들 수 있다. 이를 통해 매우 유연하고 복잡한 목록과 Grid를 만들 수 있다.

RecyclerView의 구성요소

  1. RecyclerView.Adapter
    : 어댑터는 데이터를 RecyclerView 내에 표시되는 view에 바인딩한다. view의 생성 및 재활용을 관리하고, 각 아이템에 대해 데이터를 표시하는 방법을 정의하며, ViewHolder와 상호 작용한다.
  2. RecyclerView.ViewHolder
    : ViewHolder는 각 데이터 아이템에 대한 view에 대한 references를 보유하는 클래스다. view의 구성요소에 대한 references를 캐싱하여 반복되는 findViewById 호출을 방지하는 데 도움이 된다.
  3. LayoutManager
    : LayoutManager는 수직 또는 수평 스크롤 및 grid 레이아웃과 같이 RecyclerView에서 아이템이 배치되는 방식을 결정한다.

ListView와의 주요 차이점

  1. 성능
    : RecyclerView는 view 재활용 기능이 내장되어 있고 관심사(LayoutManager, Adapter 등)를 더 잘 분리할 수 있기 때문에 ListView보다 효율적이다.
  2. 사용자 지정
    : 아이템이 배치되고 표시되는 방식을 사용자가 지정할 수 있는 더 많은 유연성과 옵션을 제공한다.
  3. 애니메이션
    : ListView에서는 구현하기 어려운 아이템 애니메이션을 기본적으로 지원한다.
  4. 모듈성
    :RecyclerView는 모듈식으로 되어 있어 스크롤 동작, 아이템 레이아웃, view 재활용을 별도의 구성 요소로 사용자가 지정할 수 있다.

사용 사례 예시

  • 아이템 목록(예: 메시지, 연락처 등) 표시
  • 갤러리에서 이미지 grid 만들기
  • 다양한 유형의 아이템이 있는 데이터 표시(예: 텍스트 및 이미지 게시물이 있는 뉴스피드)
  • carousel(캐러셀) 또는 staggered grid(엇갈린 그리드)와 같은 복잡한 스크롤 가능한 UI 패턴