어댑터 뷰
AdapterView
- 데이터를 적재해서 큰 틀에다 놓고 화면에 출력하는 방법이다.

데이터 영역에서 어뎁터에 적재(setAdapter())한다. 이를 레이아웃에 리스트 형식(ListView)으로 화면에 출력한다.

ListView 뿐 아니라 GridView, Spinner, Gallery 같이 다양한 방법이 있다.

어댑터는 ArrayList나 DB에서 데이터를 수집하고, 레이아웃을 표현하는 XML코드를 해석해 AdapterView의 화면을 구성한다.
AdapterView로는 ListView, Spiiner 등이 있다.
어댑터
- 화면에 표시되는 AdapterView를 위해 화면에 표현되는 "데이터를 관리" 하는 역할을 한다.
- Adapter는 전달받은 데이터의 유형에 따라 다양한 자식 View로 세분화된다.
AdaterView : 화면에 뿌려주는 역할
Adapter : AdapterView에 필요한 데이터들을 관리
초기화 방법
//생성자
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
ArrayAdapter(Context context, int textViewResourceId, T[] objects)
context : AdapterView를 출력할 액티비티의 콘텍스트(this)
ArraysAdapter를 생성한 주체 액티비티
textViewResourceId : 아이템을 표현하는 방법을 결정하는 레이아웃(리소스 ID)

objects : Adapter에 입력으로 전달되는 데이터 객체
Adapter = new ArrayAdapter<String>(this, adnroid.R.layout.simple_list_item_checked, arGeneral);
ListView
- 여러개의 항목들을 수직으로 표시하는 위젯
- 다수의 항목을 출력해야 하는 경우
- 수직 스크롤 지원, 표시되는 항목의 개수에는 제한이 없음
- 위아래로 스크롤 할 수 있는 기능
- 아이템은 ListView에서 하나의 행을 구성하는 항목으로 레이아웃을 통해 다양한 형태로 구성 할 수 있음.
XML에서 ListView를 생성하고, JAVA 코드로 Adapter를 선언해 데이터를 적재하고, 이를 연결시켜준다.
list.setAdapter(adapter)
리소스에서 데이터를 참조
- 고정적인 문자열이라면 컬렌션이나 배열보다는, XML 코드에 정의해 놓고 사용하는것이 바람직하다.
- 배열을 리소스에 정의하기 위해 패키지탐색기의 values 폴더에 arrays.xml을 작성하여 문자열들을 리소스로 R.java에 등록할 수 있다.
//arrays.xml
...
<resources>
<string-array name="mobile">
<item>Application</item>
<item>Activity</item>
<item>Intent</item>
<string-array>
</resources>
문자열을 XML에서 선언하고 접근할 수 있는 기능을 지원하는 string-array 엘리먼트를 사용하여 작성한다.
- name 속성에 배열 리소스의 이름을 지정하고, item 엘리먼트로 배열 요소값을 정의한다.
//MainActivity.java
//ListView에 부착하기
public class MainActivity extends Activity {
protected void onCreate(bundle savedInstanceState) {
...
ArrayAdatater<CharSequence> Adapter;
Adapter = ArrayAdapter.createFromResource(this, R.array.mobie, android.R.layout.simple_list_item_1);
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(Adapter);
}
}
ListView 속성
- choiceMode
- ListView 내의 View를 선택하는 형식을 정의
none | CHOICE_MODE_NONE | 항목 선택 X |
singChoice | CHOICE_MODE_SINGLE | 하나의 항목 선택 |
multipleChoice | CHOICE_MODE_MULTIPLE | 복수 개의 항목 선택 |
- divider
- 항목 사이의 구분선을 지정하는 속성
- setDivider 메서드를 사용하여 Drawable 객체를 인수로 전달하고, dividerHeight 속성으로 두께를 지정
- setChoiceMode 등
Spinner
- ListView는 항상 펼쳐져있지만 Spinner는 클릭할 때만 팝업 형식으로 펼쳐진다.
- Spiiner의 경우에는 여러 개의 항목 중에서 하나를 선택할 때 사용되며, 화면의 공간에 제약이 있는 스마트폰이나 패드형 컴퓨터에서 적합하다.
- 목록을 보려면 팝업을 열고, 최종 선택을 위해 최소 두 번 클릭해야한다.
- Spinner 또한 Adpater로 부터 데이터를 제공받는다.
화면에 표시하는 기본 레이아웃
simple_spinner_item : 문자열
simple_spinner_dropdown_item : 문자열과 라디오 버튼이 같이 나타남
setDropDownViewResource 메서드
- Spinner 자체에 적용할 레이아웃과는 별도로 클릭했을 때 나타나는 팝업의 레이아웃을 지정하는 메서드이다.
public void setDropDwonViewResource(int resource)
- 매개변수로는 단순한 형태의 메뉴 모양인 simple_spinner_item 또는 음영이 적용된 드롭 다운 메뉴 모양인
simple_spinner_dropdown_item 중 하나를 지정
Prompt 메시지
- Spinner에서는 선택 사항에 대한 Prompt 메시지를 팝업 상단에 표시 할 수 있다는 점도 ListView와 다른점이다.
- Prompt 메시지의 내용은 리소스의 문자열 ID를 지정할 수 있고, 직접 문자열을 지정할 수도 있다.
- Spinner의 팝업 레이아웃에서 item의 선택을 변경하면, AdapterView.OnItemSelectedListener 인터페이스의 두 메서드가 다음과 같이 호출된다.
void onItemSelected(AdapterView<?> parent, View view, int position, long id) //항목 선택 시
void onNothingSelected(AdpaterView<?> parent) // 모든 항목이 선택 해제될 시