둘 모두 리스트 형식의 데이터를 표시할 때 사용하는 대표적인 UI 컴포넌트이다. RecyclerView는 ListView를 개선한 버전으로 성능과 확장성이 뛰어나다.
ViewHolder 패턴 사용 여부
ListView : ViewHolder 패턴을 선택적으로 사용RecyclerView : 기본적으로 사용 (성능을 최적화)뷰 재사용 방식
ListView : convertView를 사용하여 수동 최적화RecyclerView : 스크롤 시 보이지 않는 뷰를 자동으로 재사용하여 성능 최적화레이아웃 관리
ListView : 단순한 세로 리스트만 지원RecyclerView : LinearLayout, GridLayout, StaggeredGrid 등 다양한 형태의 리스트 지원클릭 이벤트 처리
ListView : setOnItemClickListener() 사용RecyclerView : ViewHolder 내부에서 직접 설정애니메이션 지원
ListView : 기본적으로 지원하지 않음RecyclerView : 아이템 추가 / 삭제 애니메이션 지원ViewHolder 패턴은 리스트 UI에서 뷰를 찾고 저장하는 과정을 최소화하고 저장된 뷰 객체를 재사용하기 때문에 성능이 향상된다. 이는 리스트가 길어질수록 차이가 많이 발생한다.
ListAdapter는 RecyclerView.Adapter를 상속받아 리스트의 변경을 자동으로 처리하도록 설계된 어댑터이다.
DiffUtil 지원ListAdapter : 기본적으로 포함Adapter : 직접 구현해야함ListAdapter : 변경 감지가 자동으로 최적화 (submistList())Adapter : 변경을 수동으로 처리 (notifyDataSetChanged() 또는 notifyItemChanged())ListAdapter : 리스트 변경이 잦은 경우Adapter : 단순한 정적인 리스트인 경우