[2024. 01. 05] AdapterView
🥐 AdapterView란?
- 어댑터 뷰는 여러 개의 항목을 다양한 형식(다양한 이미지뷰, 텍스트뷰, 컬러 등)으로 나열하고 선택할 수 있는 기능을 제공하는 뷰이다.
예를 들어, 리스트 형식으로 이미지뷰 한 개와 텍스트뷰 두 개를 써야한다고 하자. 리스트가 10개라면 열심히 만들 수 있겠지만, 100개를 넘어간다면 그 100개를 일일이 다 만들 수가 없을 것이다. 어댑터 뷰를 이용하면 리스트 중 한 개를 만들어서 이것을 재사용할 수 있다.
- 리스트뷰(ListView)는 항목을 수직으로 나열시키는 방식
- 그리드뷰(GridView)는 항목을 격자 형태로 나열시키는 방식
- 어댑터 뷰는 표시할 항목 데이터를 직접 관리하지 않고,어댑터라는 객체로부터 공급받는다. 데이터 원본을 AdapterView에서 직접 가지고 있는 것이 아니라, 중간에서 Adapter(중계 역할)가 가공을 해서 형식에 맞게 AdapterView에 넘겨준다.
- 그러므로 AdapterView에는 무조건 Adapter를 만들어야 한다.(기본 제공 Adapter 또는 Custom Adapter)

🥐 Adapter
1. Adapter란?
- Adapter는 데이터를 관리하며, 데이터 원본과 어댑터뷰(ListView, GridView) 사이의 중계 역할을 한다.
- 어댑터뷰는 어떻게 데이터 항목을 표시할까?
- 어댑터뷰가 어댑터를 사용하기 위해서는 먼저 데이터 원본이 어댑터에 설정되어야 하고, 어댑터뷰에는 어댑터가 설정되어야 한다.(Adapter가 데이터 원본을 가지고 있어야 하고, 어탭터뷰에는 Adapter를 연결해야 한다.)
- 어댑터뷰는 항목을 표시하기 위해서 먼저 표시할 항목의 총 개수를 알 필요가 있을 것이다. 이 때, 어댑터 뷰는 어댑터의 getCount()란 메소드를 통해 현재 어뎁터가 관리하는 데이터 항목의 총 개수를 반환한다.
- 어댑터 뷰는 어댑터의 getView()란 메소드를 통해서 화면에 실제로 표시할 항목뷰를 얻고, 이를 화면에 표시한다.
- 사용자가 어댑터뷰의 특정 위치의 항목을 선택하였을 때, 어댑터뷰는 선택된 항목, 항목ID, 항목뷰를 어댑터의 getItem(), getItemId(), getView() 메소드를 통해 얻어와서 이를 항목 선택 이벤트 처리기에 넘겨준다.
- 요약하면, 어댑터뷰는 어댑터에 정의된 인터페이스를 바탕으로 필요한 정보를 요청하여 항목뷰를 화면에 표시하거나 선택된 항목뷰를 처리한다.

2. Adapter의 종류
1) BaseAdapter
- 어댑터 클래스의 공통 구현
- Custom Adapter(사용자 정의 어댑터) 구현 시 BaseAdapter를 상속받아서 만듦
2) ArrayAdapter
- 단순히 객체 배열이나 리소스에 정의된 배열로부터 데이터를 공급받을 때 사용
3) CursorAdapter
4) SimpleAdapter
- 데이터를 Map(키,값)의 리스트로 관리**
- 데이터를 XML파일에 정의된 뷰에 대응시키는 어댑터
