기초다지기 (7) - ListView / RecyclerView

JongHyunSeo·2025년 3월 4일

Android 기초

목록 보기
5/7

ListView와 RecyclerView

둘 모두 리스트 형식의 데이터를 표시할 때 사용하는 대표적인 UI 컴포넌트이다. RecyclerViewListView를 개선한 버전으로 성능과 확장성이 뛰어나다.

주요 차이점

  • ViewHolder 패턴 사용 여부

    • ListView : ViewHolder 패턴을 선택적으로 사용
    • RecyclerView : 기본적으로 사용 (성능을 최적화)
  • 뷰 재사용 방식

    • ListView : convertView를 사용하여 수동 최적화
    • RecyclerView : 스크롤 시 보이지 않는 뷰를 자동으로 재사용하여 성능 최적화
  • 레이아웃 관리

    • ListView : 단순한 세로 리스트만 지원
    • RecyclerView : LinearLayout, GridLayout, StaggeredGrid 등 다양한 형태의 리스트 지원
  • 클릭 이벤트 처리

    • ListView : setOnItemClickListener() 사용
    • RecyclerView : ViewHolder 내부에서 직접 설정
  • 애니메이션 지원

    • ListView : 기본적으로 지원하지 않음
    • RecyclerView : 아이템 추가 / 삭제 애니메이션 지원

ViewHolder 패턴

ViewHolder 패턴은 리스트 UI에서 뷰를 찾고 저장하는 과정을 최소화하고 저장된 뷰 객체를 재사용하기 때문에 성능이 향상된다. 이는 리스트가 길어질수록 차이가 많이 발생한다.

ListAdapter와 RecyclerView.Adapter

ListAdapterRecyclerView.Adapter를 상속받아 리스트의 변경을 자동으로 처리하도록 설계된 어댑터이다.

주요 차이점

  • DiffUtil 지원
    • ListAdapter : 기본적으로 포함
    • Adapter : 직접 구현해야함
  • 데이터 변경점 처리
    • ListAdapter : 변경 감지가 자동으로 최적화 (submistList())
    • Adapter : 변경을 수동으로 처리 (notifyDataSetChanged() 또는 notifyItemChanged())
  • 권장 사용 케이스
    • ListAdapter : 리스트 변경이 잦은 경우
    • Adapter : 단순한 정적인 리스트인 경우
profile
공부는 꾸준하게

0개의 댓글