어댑터 뷰(AdapterView)는 같은 종류의 뷰들을 특정한 방식으로 반복해서 보여주는데 적합하며,
ListView, GridView, Gallery, Spinner가 뷰 컨테이너 위젯에 속한다.
ListView
모든 위젯의 공동 조상인 AdapterView는 ViewGroup으로 부터 파생되므로 어댑터 뷰는 항복에 해당하는 여러 개의 차일드 뷰를 가질 수 있다 뿐만 아니라 linear, relative 같이 배치만 담당하는 레이아웃과는 달리 사용자와 상호 작용도 처리하므로 터치나 키패드로 항목을 선택할 수도 있다.
위의 위젯들을 adapter View 라고 부르는 이유는 표시할 항목 데이터를 adapter 객체로부터 공급받기 때문이다. 항목의 개수는 이론적으로 무한대일 뿐만 아니라 실행 중에 목록이 바뀔 수도 있으며 데이터의 원본도 다양하다. 이런 복잡한 데이터를 위젯이 직접 처리하는것은 효율적이지 못하므로 두 객체가 협동적으로 동작한다.
adapter은 원본으로부터 얻은 데이터를 관리하며 adapterView는 adapter가 전달한 데이터를 화면에 표시한다.
위젯과 연결될 수 있는 adapter들의 계층은 아래 그림과 같다.
최상위의 Adapter 인터페이스는 AdapterView와 데이터 간의 연결을 제공하고 항목의 집합을 관리하는 기본적인 method를 선언한다.
Adapter로부터 두 개의 인터페이스가 파생되는 데 ListAdapter와 SpinnerAdapter interface이다.
ListAdapter : ListView와 연결에 필요한 method를 정의한다.
SpinnerAdapter : Spinner와 연결에 필요한 method를 정의한다.
둘다 인터페이스이기 때문에 method가 구현되어 있지는 않다.
추상클래스 BaseAdapter에서 위에 두 interface의 method 중 기본적인 것을 구현한다.
또 BaseAdapter의 파생 클래스가 있는데 이 클래스들은 항목의 원본이 어디인가에 따라 아래처럼 나누어진다.
ArrayAdapter : 객체 배열이나 리소스에 정의된 배열로부터 데이터를 가져온다.
CursorAdapter : 데이터 베이스로부터 데이터를 공급받는다.
SimpleAdapter : xml 파일의 정적인데이터를 원본으로 사용한다.
어떠한 경로든 Adapter는 원본에서 구한 데이터로 뷰를 만들 책임이 있으며 adapter가 제공하는 View는 AdapterView에 항복 하나로 표시된다.
'Android' 카테고리의 다른 글
안드로이드 리스트뷰 추가 삭제 (0) | 2012.08.01 |
---|---|
안드로이드 리스트 뷰 (0) | 2012.08.01 |
안드로이드 기본 위젯 (0) | 2012.07.31 |
안드로이드 리소스, 에셋 (0) | 2012.07.31 |
안드로이드 메뉴 (0) | 2012.07.31 |