개발/Android

Viewgroup, View, ListView

2013. 2. 7. 18:28

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