[Android] AdapterView - 1 Android 2011. 12. 19. 15:22
어댑터 뷰는 리스트 뷰, 그리드 뷰, 스피너, 갤러리 등 모은 것을 묶어서 어댑터 뷰라고 통칭한다.

이들은 여러개의 차일드 뷰를 가질 수도 있으며 터치나 키패드로 항목을 선택 할 수도 있다.

먼저 리스트 뷰를 보면 xml 파일을 다음과 같이 작성한다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>
그리고 자바 파일은 다음과 같다.

/** Called when the activity is first created. */
 @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("1");
        arr.add("2");
        arr.add("3");
        arr.add("4");
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr);
        ListView list = (ListView)findViewById(R.id.list);
        list.setAdapter(adapter);
    }
행여 혹시나 ArrayList가 어떤 것을 import 해야할지 모르는 사람들을 위해 한마디. java.util 을 import 하면 된다.

여기에서 보면 먼저 데이터를 형성하고 그 다음 어댑터를 준비, 다음으로 연결 했다. 어댑터의 속성은 다음과 같다.

첫번째 인자는 현재 액티비티. 그 다음은 리소스 아이디, 마지막으로 생성된 데이터다. 마지막 인자는 배열 형태로도 넣을 수 있다.

리소스 아이디를 살펴보면 다음과 같다.

 리소스 아이디 설명 
 simple_list_item_1 하나의 텍스트 뷰
 simple_list_item_2 두개의 텍스트 뷰
 simple_list_item_check 오른쪽에 체크 표시
 simple_list_item_single_choice 오른쪽에 라디오 버튼 표시
 simple_list_item_multiple_choice 오른쪽에 체크 버튼 표시

하지만 이런 형식으로 데이터를 입력 하는 것보다 리소스에 정의 해서 쓰는 것이 좋다.

리소스 파일을 생성해서 10개의 데이터를 넣어보자.

arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name ="array">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>5</item>
        <item>6</item>
        <item>7</item>
        <item>8</item>
        <item>9</item>
        <item>10</item>
    </string-array>
</resources>

java 파일에서는 어댑터를 다음과 같이 써 주면 된다.

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.array,android.R.layout.simple_list_item_1);

리스트 뷰에는 다음과 같은 속성들이 존재한다.

 속성  인자   설명 
 none  CHOICE_MODE_NONE  항목 선택 못함
 singleChoice  CHOICE_MODE_SINGLE  하나의 항목 선택
 multipleChoice  CHOICE_MODE__MULTIPLE  복수의 항목 선택

java 코드에서 다음과 같은 코드를 추가하고 실행해보면 변화를 알 수가 있을 것이다.

list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setDivider(new ColorDrawable(0xffffff00));
list.setDividerHeight(2);