2010년 9월 13일 월요일

ListView의 레이아웃 변경 (Change Layout for ListView)

안드로이드에서는 ListView가 화면에 보이는 레이아웃을 XML로 정의할 수 있다.

대부분의 책에 보면 ListView의 예제 코드에서는 android.R.layout.simple_list_item_1을 사용하고 있다. 그 경우 레이아웃은 아래와 같다.

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, R.id.listentry, data);
 
    setListAdapter(adapter);


android.R로 시작하는 경우 안드로이드에 기본으로 들어있는 리소스들을 참조하는 것이다. 안드로이드에 기본으로 들어있는 layout의 목록은 다음과 같다.

android.R.layout.activity_list_item
android.R.layout.browser_link_context_header
android.R.layout.expandable_list_content
android.R.layout.preference_category
android.R.layout.select_dialog_item
android.R.layout.select_dialog_multichoice
android.R.layout.select_dialog_singlechoice
android.R.layout.simple_dropdown_item_1line
android.R.layout.simple_expandable_list_item_1
android.R.layout.simple_expandable_list_item_2
android.R.layout.simple_gallery_item
android.R.layout.simple_list_item_1
android.R.layout.simple_list_item_2
android.R.layout.simple_list_item_checked
android.R.layout.simple_list_item_multiple_choice
android.R.layout.simple_list_item_single_choice
android.R.layout.simple_spinner_dropdown_item
android.R.layout.simple_spinner_item
android.R.layout.test_list_item
android.R.layout.two_line_list_item


아래는 android.R.layout.simple_expandable_list_item_1을 사용한 경우이다.


아래는 android.R.layout.simple_expandable_list_item_single_choice를 사용한 경우이다.


안드로이드에 기본적으로 들어있는 레이아웃이 마음에 드는게 없으면 직접 레이아웃을 정의해 사용할 수도 있다.

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listentry"
      android:textSize="16sp"
      android:textColor="#ff0000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

위와같이 /res/layout 디렉토리에 xml파일을 넣어주고 ArrayAdapter를 만들때 레이아웃 파일을 지정해 주면 된다.

    adapter = new ArrayAdapter<String>(this, R.layout.simple_layout, R.id.listentry, data);
 
    setListAdapter(adapter);



레이아웃에 단순히 TextView 하나만 넣지 않고 컨테이너를 사용해서 여러 위젯을 집어넣을 수도 있다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
  <TextView android:text="Airport:"
          android:textSize="14sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
  <TextView android:id="@+id/listentry"
          android:textSize="18sp"
          android:textColor="#ff0000"
          android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

    adapter = new ArrayAdapter<String>(this, R.layout.entrylayout, R.id.listentry, data);
 
    setListAdapter(adapter);








댓글 1개:

  1. 사진이 모두 엑박뜨고 있습니다... 에고..ㅠㅠ

    답글삭제