안드로이드/이론관련

리스트뷰(List View) vs 리사이클러뷰(Recycler View)

닉네임못짓는사람 2022. 1. 27. 12:30
반응형

안드로이드에서 목록을 표시하는 View로는 리스트뷰와 리사이클러뷰 두 가지가 있다.

이 글에선 두 View가 어떻게 다른지에 대해서 알아보도록 하자.

 

리스트뷰와 리사이클러뷰의 차이점


1. ViewHolder

가장 먼저, 리사이클러뷰는 ViewHolder패턴을 사용하는데 반해, 리스트뷰는 이를 사용하지 않는다는 점이 있다.

 

리스트뷰의 경우 목록에 있는 각 Item마다 이를 구성하는 View들을 findViewById을 통해 연결해주어야 하는데,

이는 상당히 무거운 작업이기 때문에 Item을 생성할 때마다 이런 작업을 하게 되면, 성능 저하가 일어나게 된다.

 

반면, 리사이클러뷰에선 ViewHolder패턴을 강제로 구현하여 위와 같은 문제점을 해결한다.

ViewHolder패턴이란?

각 View를 보관하는 객체이며, layout태그 필드 안에 각 View를 저장하기 때문에

반복적인 조회가 필요 없이 즉시 액세스가 가능하다.

ViewHolder패턴에선 Item생성 시 기존에 ViewBinding 된 View객체를 재활용한다.

즉, 만들어진 VIew를 가져다가 Layout에 데이터만 채워주는 것이다.

 

ViewHolder의 경우 리스트뷰에서도 구현이 가능하지만,

강제는 아니라는 점이 리사이클러뷰와의 차이점일 것이다.

 

2. 스크롤 방향

리스트뷰의 경우 Item들을 세로로 늘어놓아 상하 스크롤만 지원한다.

반면, 리사이클러뷰의 경우 세로뿐만 아니라 가로, 지그재그등의 방향도 지원한다.

 

3. 애니메이션

리사이클러뷰의 경우 Item들을 추가, 제거할 때 애니메이션을 처리하는 클래스가 존재한다.

반면, 리스트뷰는 이러한 애니메이션을 적용할 수 없다.

 

4. Adapter

리스트뷰의 경우 리스트를 구현하기 위해 배열/DB결과에 대한

ArrayAdapter, CursorAdapter 등의 다양한 소스에 대한 어댑터가 존재한다.

반면, 리사이클러뷰는 데이터를 제공하기 위한 어댑터를 사용자가 구현해주어야 한다.

 

5. Decoration

리스트뷰의 경우 Android:divider속성을 이용해 리스트 내의 Item들을 쉽게 구분할 수 있다.

반면, 리사이클러뷰의 경우 RecyclerView.ItemDecoration객체를 사용해 많은 구분선을 설정해야 한다.

 

6. Click Detection

리스트뷰의 경우 리스트 내의 각 Item들에 대한 Click Event에 Binding 하기 위한

OnItemClickListener인터페이스가 존재한다.

반면, 리사이클러뷰는 클릭 처리 기능이 내장되어있지 않기 때문에 OnClickListener를 통해 직접 구현해주어야 한다.

반응형

'안드로이드 > 이론관련' 카테고리의 다른 글

액티비티 생명 주기(Activity Lifecycle)  (0) 2023.02.27
레이아웃의 종류  (0) 2022.02.07
JAR, DEX, APK, AAR파일  (0) 2021.12.20
View와 ViewGroup  (0) 2021.12.19
ANR(Application Not Responding)  (0) 2021.12.18