본문 바로가기
android

RecyclerView란

by 윈 Win 2021. 1. 6.
728x90

블로그 이사했습니다!

 

👇 블로그 이전 공지 👇

블로그 이전 안내 (tistory.com)

 

 

👇 새 블로그에서 글 보기 👇

[Android] RecyclerView 사용법 — Win Record (tistory.com)

 

[Android] RecyclerView 사용법

⚠️ 2021.01.07에 작성된 글입니다 ⚠️ 리사이클러뷰란? 정의 안드로이드 앱에서 다량의 데이터를 스크롤로 표시하기 위해 사용하는 위젯 앱에서 대량의 데이터 세트 또는 자주 변경되는 데이터

win-record.tistory.com

 

 


 

 

간단 정의

안드로이드 앱에서 다량의 데이터를 스크롤로 표시하기 위해 사용하는 위젯

앱에서 대량의 데이터 세트 또는 자주 변경되는 데이터에 기반한 요소의 스크롤 목록을 표시해야 한다면 이 페이지에서 설명하는 대로 RecyclerView 를 사용하면 됩니다.

android studio developers

 

등장 배경

요약: listview의 문제를 해결하고자 진보 및 유연한 recyclerview 등장

listview VS recyclerview

  listview recyclerview
아이템
표현 방식
화면에서 사라지고 나타날 때마다
삭제 및 생성 반복
화면에서 사라진 아이템의 틀을
새로 보여주는 아이템의 틀로 재사용
viewholder
구현여부
선택 강제

 

같은 형식의 다량 데이터(각각을 아이템이라 함)를 보여주는 listview가 있었음.

listview는 아이템을 계속 생성 및 삭제하며 쭉 보여주는 방식.

이는 ram의 메모리, 즉 리소스 사용률을 높이게 함.

물론 viewholder라는 것을 사용해 listview의 리소스 사용률을 관리할 수 있었지만 강제가 아님.

결국 viewholder를 사용하지 않아도 listview가 구현되었기 때문에 대부분 viewholder 미사용.

 

안드로이드 초반에는 리소스 사용률이 높아도 앱의 규모가 작아 사용하는데에 문제가 없지만,

점점 많은 데이터를 보여주게 되고 이로 인해 메모리를 많이 잡아먹자,

안드로이드는 리소스를 관리하게 하는 viewholder를 반드시 구현하도록 하는 recyclerview를 만듦.

삭제 생성을 반복하는 listview와 달리 화면에서 안 보이게 된 아이템의 틀을 새로 보여줄 아이템 틀로 재사용.

이미지 출처: WiselTech

listview와 달리 recyclerview는
1. viewholder를 무조건 구현해야 한다.
2. layoutmanager를 통해 가로·세로 리스트(linearlayoutmanager), 그리드 리스트(gridlayoutmanager), 각 크기가 다양한 그리드 리스트(staggeredlayoutmanager)를 만들 수 있다.
3. 아이템에 다양한 애니메이션을 줄 수 있다. (RecyclerView.ItemAnimator)
4. 아이템 디자인을 보다 다양한 부분으로 할 수 있지만 구현 또한 보다 복잡하다. (RecyclerView.ItemDecorator)
5. 아이템을 보다 잘 컨트롤 할 수 있지만 마찬가지로 코딩에서 복잡해졌다. (RecyclerView.OnItemTouchListener)
6. 리스트를 보여주는 퍼포먼스가 보다 빨라졌다.

- Kishore C S | Medium

 

 

 

 

다음 글

RecyclerView 기본 사용 (tistory.com)

 

 

 


 

참고자료

RecyclerView로 목록 만들기  |  Android 개발자  |  Android Developers

ListView vs RecyclerView. As an Android developer, Many people… | by Kishore C S | Medium

'android' 카테고리의 다른 글

디데이 계산기  (0) 2021.01.11
WebView 웹뷰  (0) 2021.01.10
RecyclerView CRUD  (0) 2021.01.07
RecyclerView 기본 사용  (0) 2021.01.07
android jetpack  (0) 2021.01.06

댓글