본문 바로가기
Android

RecyclerView

by 안스 인민군 2023. 8. 24.

안드로이드 개발자라면 당연히 아는 Recyclerview.

나는 사용법에 대해서만 띄엄띄엄 알 뿐, 완벽하게 이해하고 사용하고 있지는 않은 거 같아 이번 블로그를 작성하며 완벽히 알고서 사용해보로록 하자.


이전에는....

고대의 안드로이드 개발자들은 위와 같은 ListView를 만들 때 ListView라는 라이브러리를 사용했었는데....(필자의 처음 개발할때도 ListView를 사용) 아래와 같은 문제점이 있었다.

  •  재사용 : 뷰를 재사용하기 위해 복잡한 코드를 작성해야 했고 다른 비슷하지만 획일화 되지 않는 어떠한 패턴을 사용하여 개발하였었다.(당시의 블로그를 가보면 다들 만드는 법이 다 다름)
  • 레이아웃 유연성 : ListView는 세로 스크롤을 지원하는 선형 리스트만을 제공해서 좀더 복잡한 뷰를 그리는데 제약이 많았다.
  • 애니메이션 : 애니메이션 기능이 없어 개발자가 직접 개발해야 했다.

그래서..!!

2014에서 Google I/O 컨퍼런스에서 Lollipop과 함께 RecyclerView가 출시되었다.

RecyclerView는 ListView의 상위호환으로 위에 있는 모든 단점을 보안 후 구현하여 라이브러리화 하였으며 뷰 홀더 패턴을 사용하여 획일화를 시켰다.

뿐만 아니라 개발자가 데이터와 아이템 형태만 제공하면 RecyclerView 라이브러리가 필요할 때 요소들을 동적으로 생성하여 재사용이 가능하게 개발되었으며 notifyDataSetChanged(), notifyItemChanged(int)과 같은 메소드를 런타임에 호출 가능하게 하여 뷰를 시시각각 변경이 가능하다.

이 뿐아니라 애니메이션 기능과 다양한 레이아웃을 제공하여 뷰의 유연성을 높였다.

다양한 레이아웃에는 LinearLayoutManager(수평 혹은 수직의 단일 방향리스트), GridLayoutManager(그리드형태 리스트), StaggeredGridLayoutManager(아이템들을 불규칙한 그리드 형태, Pinterest 형태를 생각하면 됨) 가 있는데 이건 기억해 두도록 하자.

RecyclerView의 구성 요소

  1. RecyclerView.Adapter: 이는 데이터 세트를 관리하며, 데이터를 아이템 뷰에 바인딩하는 역할을 한. Adapter ViewHolder 객체를 생성하고, 객체를 데이터와 연결(bind) 한.
  2. ViewHolder: ViewHolder 아이템 뷰의 레이아웃을 참조하고, 뷰의 메타데이터를 저장하는 역할을 한. 메타데이터는 아이템의 위치 정보나, 뷰가 화면에 그려진 시점 등을 포함 한다.
  3. LayoutManager: 이는 아이템 뷰의 배치를 담당한다. LinearLayoutManager, GridLayoutManager, StaggeredGridLayoutManager 다양한 유형의 LayoutManager 있으며, 개발자는 자신의 필요에 맞게 선택하여 사용할 있다.
  4. ItemDecoration: 이는 아이템 주변이나 사이에 드로잉을 추가하는데 사용된다. 예를 들어, 아이템 간에 구분선을 추가하는 등의 작업을 수행할 있다.
  5. ItemAnimator: 이는 RecyclerView에서 아이템 추가, 제거, 재정렬 등의 작업이 발생할 애니메이션을 처리한다.

RecyclerView의 재사용

Recycl