본문 바로가기
안드로이드 자바

[JAVA][Android] 리사이클러뷰 (원리)

by teamnova 2022. 2. 26.
728x90

RecyclerView는 많은 곳에서 사용자에게 방대한 데이터들을 보여주며 사용되고 있습니다. 하지만 실제로 어떻게 작동하고, 데이터가 어떻게 사용자에게 보여지는 걸까요?

 

 

RecyclerView 내부 동작을 알아보기 전에 먼저 ListView가 있었음에도 불구하고 왜 RecyclerView가 생겼는지에 대해 파악해보겠습니다.

 

ListView는 다음과 같은 몇 가지 단점이 있었습니다.

  • 스크롤 시 버벅임 : ListView는 데이터셋에 데이터 아이템이 있는 만큼 많은 뷰를 생성하는 습관이 있습니다. 이렇게 뷰를 만들고 findViewById() 메소드를 사용하는 것은 비용이 상당히 많이 드는 작업입니다. 
  • 기본 애니메이션의 지원이 없다 : ListView는 애니메이션에 대한 기본 지원이 제공되지 않으며 완벽한 애니메이션을 구현하는 데 걸리는 시간과 노력을 우리는 알고 있습니다.
  • 오직 수직 스크롤만 가능 : ListView는 오로지 수직 스크롤만 가능합니다.

 

 

RecyclerView

RecyclerView는 무엇일까요? 안드로이드 공식 문서에 다음과 같이 설명되어 있습니다.

RecyclerView는 스크롤 리스트를 만들 수 있는 UI 컴포넌트입니다. 기본적으로 Viewholder 패턴을 사용하여 수평/ 수직/ 그리드 또는 staggerd한 그리드 방식으로 어댑터 기반의 뷰를 렌더링하는데 사용되는 새로운 ViewGroup입니다.

 

 

RecyclerView의 4가지 주요 컴포넌트는 다음과 같습니다.

  • RecyclerView.Adapter : 앱의 데이터셋에서 RecyclerView에 표시되는 아이템 뷰에 바인딩을 제공합니다. 어댑터는 RecyclerView의 각 아이템 뷰의 위치를 데이터 소스의 특정 위치에 연결하는 방법을 알고 있습니다.
  • RecyclerView.LayoutManager : RecyclerView내에 아이템을 배치합니다. 미리 정의된 여러 가지 레이아웃 매니저 중 하나를 사용하거나 커스텀 레이아웃 매니저를 구현하여 사용할 수 있습니다. 리니어 또는 그리드 레이아웃 매니저를 기본으로 사용할 수 있습니다.
  • RecyclerView.ItemAnimator : RecyclerView에는 기본 애니메이션이 함께 제공되며, 이를 오버라이드하고 필요에 따라 변경할 수 있습니다. 기본적으로 RecyclerView는 DefaultItemAnimator를 사용합니다.
  • RecyclerView.ViewHolder : RecyclerView와 함께 의무적으로 사용해야하며, 화면에 그리고 싶은 개별적인 아이템의 UI를 그릴 수 있도록 도와줍니다.

 

 

 

이제 리사이클러뷰의 프로세스에 대해서 알아봐욥

우선 데이터셋(데이터 리스트)에 데이터(아이템)가 보관됩니다. 어댑터는 데이터를 뷰에 바인딩한 다음 뷰를 제어하는 레이아웃 매니저에게 이를 제공합니다.

RecyclerView는 데이터 소스의 모든 아이템에 대해 아이템 뷰를 할당하지 않습니다. 대신 화면에 맞는 아이템 뷰의 수만 할당하고 사용자가 스크롤할 때 해당 아이템 레이아웃을 다시 재활용합니다. 뷰가 스크롤되어 보이지 않게 되면 위 다이어그램과 같이 재활용 프로세스를 거칩니다.

 

 

위와 같은 원리로 리사이클러뷰는 동작합니다. 

 

다음시간에는 리사이클러뷰의 실제 소스코드를 다뤄 보아요!! 

 

지금까지 스틱코드였습니다.

 

감사합니다.

 

https://stickode.com/mainlogin.html

 

STICKODE

 

stickode.com