Viewgroup (layout)은 여러 Viewgroup과 View들을 자식으로 가질 수 있다.
Viewgroup의 종류
- Absolute layout
- Relative layout: 자식뷰들의 상대적인 위치를 정해서 배열
- Frame layout: 자식뷰들의 프레임을 정하고 겹쳐서 배열
- Linear layout:
- Table layout: 테이블 형식으로 배열
원본 데이터를 listView에 표현하기 위해서는 Adapter라는 중계역할을 하는 녀석이 필요하다.
ListView에 표현하기 위한 Adapter는 보통 ArrayAdapter를 이용한다.
<예시1> - 일반적인 array로부터 Adapter를 생성
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> Adapter;
Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
※ list layout parameter는 simple_list_item_1 이 가장 기본이며, 이외에도 몇 가지 옵션이 더 있다.
(http://developer.android.com/reference/android/R.layout.html 참조)
simple_list_item_1 |
하나의 텍스트 뷰로 구성된 레이아웃 |
simple_list_item_2 | 두 개의 텍스트 뷰로 구성된 레이아웃 |
simple_list_item_checked | 오른쪽에 체크 표시가 나타난다. |
simple_list_item_single_choice |
오른쪽에 라디오 버튼이 나타난다. |
simple_list_item_multiple_choice | 오른쪽에 체크 버튼이 나타난다. |
※ res/layout 에 my_layout.xml 파일로 custom layout을 만들어 사용도 가능하다.
<예시2> - res/values에 파일로부터 Adapter를 생성
ArrayAdapter<CharSequence> Adapter;
Adapter = ArrayAdapter.createFromResource(this, R.array.test_resource, android.R.layout.simple_list_item_1);
// (<예시1>과 parameter 순서가 다르다.)
<!---- res/values/testArray.xml ---->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="test_resource">
<item>content1</item>
<item>content2</item>
<item>content3</item>
<item>content4</item>
<item>content5</item>
<item>content6</item>
<item>content7</item>
<item>content8</item>
<item>content9</item>
<item>content10</item>
</string-array>
</resources>
Adapter를 생성한 후에 res/layout에서 설정한 ListView와 Adapter와 연결한다.
<예시3>
ListView listView;
listView = (ListView)findViewById(R.id.list);
listView.setAdapter(Adapter);
<!---- res/layout/activity_main.xml ---->
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
android:background="#ffffff"
/>
<ListView
android:id="@+id/checkedlist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
/>
</FrameLayout>
※ "fill_parent", "wrap_content" 등의 layout parameter들은 http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html 참조.
※ 위의 layout 예시는 FrameLayout이 두 개의 ListView를 자식으로 갖고 있으며, 또 다른 Layout도 자식으로 가질 수 있다.
※ FrameLayout 이외에도 RelativeLayout, LinearLayout 등이 많이 사용된다.
'개발 > Android' 카테고리의 다른 글
View에 Scrollbar 제거 및 변경옵션 (0) | 2013.02.12 |
---|---|
ListView 메소드 (0) | 2013.02.08 |