RecyclerView와 ListView

dada·2021년 12월 1일
0

앱을 사용하다보면 가장 많이 나오는 부분이 바로 리스트 형태라고 할 수 있습니다.

즉, 사용자에게 같은 형태의 목록을 보여주는 경우가 존재합니다. 이처럼 리스트를 구현하는 방법에는

크게 ListView와 Recyclerview 두가지가 존재합니다.

ListView란?

  • 사용자가 정의한 데이터 목록을 아이템 단위로 구성하여 화면에 출력하는 ViewGroup의 한 종류이며, View들을 리스트처럼 보여주도록 하는 컨테이너

ListView의 구성요소

1) View - 화면에 보여줄 레이아웃 내에 View 객체
2) Item - 화면에 표시할 실질적인 item리스트 (데이터)
3) Adapter - Item리스트(데이터)를 View와 연결해서 뷰(View) 생성 및 관리하는 객체

📍Adapter는 어떤역할을 하는가?

👉🏻 사용자 데이터와 화면 출력 View로 이루어진 두 개의 부분을 이어주는 객체

getView()를 사용하는 ListView

  • getView()는 현재 화면상에 아이템이 보일 때 호출되는 함수
    예를 들어, 아이템이 20개가 있고 이를 스크롤한다고 가정하면 스크롤 시에도 getView() 함수는 계속해서 호출된다. ⇒ 재사용성이 떨어짐
  • findViewById()를 호출하기 때문에 성능 저하 문제가 발생한다.

RecyclerView란?

  • 사용자가 관리하는 많은 수의 데이터 집합(Data Set)을 개별 아이템 단위로 구성하여 화면에 출력하는 뷰그룹(ViewGroup)이며, 한 화면에 표시되기 힘든 많은 수의 데이터를 스크롤 가능한 리스트로 표시해주는 위젯

Recyclerview의 구성요소

1) Adapter : 아이템 뷰를 생성하는 역할
2) Layout Manager : 아이템 뷰가 나열되는 형태를 관리하기 위한 요소
3) ViewHolder : 화면에 표시될 아이템 뷰를 저장하는 객체. 어댑터에 의해 관리되며, 미리 생성된 뷰홀더 객체가 있는 경우, 새로 생성하지 않고 이미 만들어져 있는 뷰홀더를 재활용하는데, 이 때는 단순히 데이터가 뷰홀더의 아이템 뷰에 바인딩(Binding)됨.

Recyclerview 세가지 메소드

onCreateViewHolder : 뷰홀더를 생성하고, 뷰를 붙여주는 부분
onBindViewHolder : 재활용하는 뷰를 호출하여 실행하는 메서드. 데이터를 뷰에 결합한다.
getItemCount : 데이터의 개수를 반환합니다.

차이점은?

  • 가장 큰 차이점은 ViewHolder의 강제성이다. Recyclerview는 ViewHolder를 강제로 사용하여 View를 재활용한다.
  • ListView는 수직 스크롤만 가능하지만, Recyclerview는 수직, 수평 모두 가능하다.
  • Recyclerview는 layoutManager가 있기 때문에 다양하게 커스텀이 가능하다는 장점이 있다.
  • Recyclerview는 아이템 애니메이션 클래스가 존재하지만 ,ListView는 따로 없다.

참고

https://woovictory.github.io/2019/01/03/Android-Diff-of-ListView-and-RecyclerView/

https://jaejong.tistory.com/22

profile
기록하기

0개의 댓글