안드로이드 XML기반 어플리케이션에서는 스크롤이 가능한 목록 형태의 UI를 표시하기 위해서는 ListView 또는 RecyclerView를 사용할 수 있다.

다만, ListView의 성능 저하 문제로 인해 현재는 RecyclerView를 사용하는 것을 권장한다.

For a more modern, flexible, and performant approach to displaying lists, use RecyclerView.

ListView가 RecyclerView로 대체된 이유와 RecyclerView를 사용하는 방법에 대해 알아보자


목록 뷰를 구현하기 위해 아이템 수 만큼 매번 View를 inflate하는 것은 굉장히 무거운 작업임

→ ListView에서는 convertView 사용하여 해결.

ListView

→ 뷰를 재활용하지만, 새로운 데이터를 설정하기 위해 필요한 convertView내 뷰 컴포넌트들에 대해서는 매번 findViewById()를 통해 다시 가져와야 한다. (여전히 반복되는 findViewById)

(findViewById()의 동작 방식은 여러 개의 자식 뷰들의 id를 일일히 확인하는 과정을 거친다.)

위와 같은 문제를 해결하기 위해 ViewHolder를 사용하는 방법이 있다.

ViewHolder 패턴