이번 포스팅에서는 사용자가 정의한 데이터 목록을 화면에 띄울 수 있도록 도와주는 ListView 에 대해서 알아보고자 한다. 사실 이번 포스팅은 RecyclerView 를 학습하기 위한 발판이라고 생각해도 무방하며, Adapter 가 무엇인지에 집중하고자 한다.
Adapter 가 무슨 역할을 하는지 알아보기 앞서 사용자가 정의한 데이터 목록을 화면에 띄우는 전반적인 과정에 대해 간략히 살펴보자. 화면에 동일한 구조의 데이터를 띄우기 위해서는 데이터를 담고 있는 리스트 객체가 필요할 것이고, 어떻게 화면을 구성할 것인지에 대한 layout 이 필요하다. 이 과정에서 Adapter 는 리스트를 사용자로부터 받고 미리 구성한 layout 의 View 들에게 알맞는 값을 할당해주는 역할을 한다.
단일 타입의 리스트를 ListView 에 연결하기 위해선 기본적으로 제공해주는 ArrayAdapter 를 사용하면 되지만, 보통 프로젝트를 진행하면 복잡한 데이터의 리스트를 ListView 에 연결하는 경우가 많아 Adapter 의 가장 기본 추상 클래스인 BaseAdapter 를 상속해서 리스트를 사전에 구성한 layout 에 값을 할당하는 방식으로 구현하면 된다.
Adapter 의 역할을 이해하면 사실 ListView 는 구현하기가 까다롭지 않다. 하지만 하나의 데이터 타입이 아닌 여러 개의 데이터 타입을 하나의 ListView 로 구현하는 방법도 있으니 이 부분도 차차 알아보고자 한다. 사실 ListView 는 데이터 리스트가 변경될 때마다 전체의 리스트를 다시 그려주는 overhead 가 있고 모든 View 의 인스턴스를 생성해야하는 단점이 있어 거의 사용되지 않는다고 알고 있지만, Adapter 의 역할을 이해하는 과정에서는 큰 도움이 되었다고 생각한다.
요즘 프로젝트 구현에만 집중하느라 학습의 시간이 현저히 줄어들고 있는데... 구현보다 학습에 집중하도록 노력해야겠다.