본문 바로가기

Android

[안드로이드] ListView 뷰를 정의하는 방법

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Spinner, AutoCompleteTextView에 이어 이번 포스트에서는 ListView 뷰를 정의하는 방법에 대해 알아 봅니다.

 

 

ListView 뷰를 정의하는 과정

1. 프로젝트의 레이아웃 파일(예: main.xml)을 열고, 그 창의 Graphical Layout 탭을 선택하세요.


2. Graphical Layout 탭의 좌측에서 'Composite' 폴더를 선택하시면, ListView 아이콘이 보입니다. 그것을 오른쪽의 액티비티로 드래그 앤 드롭 하세요.


  


3. Graphical Layout 탭의 액티비티 화면에 ListView 뷰가 추가되었음을 확인하세요.



4. 생성된 ListView 뷰의 id 속성을 수정하세요. 아래 코드는 그 예입니다.

 

<ListView
    android:id="@+id/listViewExample"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />


5. ListView 뷰의 리스트를 구성할 항목들을 정의하세요. 이들은 배열로 정의합니다. 언어의 이름들을 갖는 배열을 정의한다고 가정해 봅시다. 자바 코드 및 XML 코드로 그것을 아래와 같이 정의할 수 있습니다.


자바 코드의 예

 

String[] strLanguages = {"English", "French", "German", "Japanese", "Korean", "Portuguese (Europe)", "Portuguese(Brazil)", "Spanish", "Turkish", "Vietnamese"};


XML 코드의 예

 

<string-array name="strLanguages">

    <Item> English </Item>

    <Item> French </Item>

    <Item> German </Item>

    <Item> Japanese </Item>

    <Item> Korean </Item>

    <Item> Portuguese (Europe) </Item>

    <Item> Portuguese (Brazil) </Item>

    <Item> Spanish </Item>

    <Item> Turkish </Item>

    <Item> Vietnamese </Item>

</string-array>


6. ListView 뷰와 5에서 정의한 배열을 이어주는 ArrayAdapter 객체를 정의하세요. 어댑터 객체의 위치는 이 뷰가 활용되는 액티비티 클래스 안이 적절합니다. 이들을 정의하는 방법은 아래 링크들을 참고하세요.


배열을 자바 코드로 정의하셨으면, 어댑터 객체를 다음과 같이 정의하실 수 있습니다.

 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(

    getApplicationContext(),

    android.R.layout.simple_list_item_1,

    strLanguages

);


배열을 XML 코드로 정의하셨으면, 어댑터 객체를 다음과 같이 정의하실 수 있습니다.

 

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(

    getApplicationContext(),

    R.array.strLanguages,

    android.R.layout.simple_list_item_1

);


7. 6에서 정의한 어댑터 객체를 ListView 뷰에 적용하세요. 이것은 그 뷰의 setAdapter 메소드를 호출하여 이루어집니다. 앞에서 만든 어댑터를 이 메소드의 파라메터로 대입해주시면 됩니다. 이 뷰의 이름이 listViewExample이고 어댑터의 이름이 adapter이라고 가정해 봅시다. 그러면 다음과 같이 코드를 작성하실 수 있습니다.

 

listViewExample.setAdapter(adapter);

 

 

지금까지 보여드린 과정들을 적용한 예를 들어보겠습니다. 프로젝트 이름은 AddingListView입니다. 이해를 돕기 위해 실행 결과를 먼저 보여 드릴께요.

 


실행 결과

먼저 초기 화면입니다.



화면에 ListView 뷰와 그것의 자식들인 TextView 뷰들이 보입니다. 이 리스트는 선택 가능한 언어들을 보여줍니다. 사용자가 그것들 중 하나를 선택하는 기능을 나중에 추가할 수 있겠지요.


이 예는 어떻게 구현되었을까요? 코드들을 보겠습니다. 참고로 이 예에서 배열은 strings.xml 파일에 정의되었습니다. 배열을 자바 코드에 정의한 예도 이 예와 함께 첨부 파일로 올리오니 참고하시기 바랍니다.


main.xml

위 그림과 같은 화면을 구성하기 위해 main.xml 파일에 TextView 뷰와 ListView 뷰를 정의했습니다. 

  

<?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"
    android:orientation="vertical" >

 

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/str_select_language" />

 

    <ListView
        android:id="@+id/listViewExample"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

 

</LinearLayout>

 

strings.xml

언어의 이름들을 갖는 배열은 아래와 같이 strings.xml 파일에 정의했습니다. 

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

 

    <string name="str_select_language"> Select one of the languages. </string>
    <string name="app_name">Example of ListView view</string>
    
    <string-array name="str_languages">
        <item> English </item>
        <item> French </item>
        <item> German </item>
        <item> Japanese </item>
        <item> Korean </item>
        <item> Portuguese (Europe) </item>
        <item> Portuguese (Brazil) </item>
        <item> Spanish </item>
        <item> Turkish </item>
        <item> Vietnamese </item>
    </string-array>

 

</resources>

 

AddingListViewActivity.java

앞에서 정의한 ListView 뷰와 연관되는 어댑터는 이 파일에 정의했습니다.

 

package me.blog.netrance.example.adding_listview;

 

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

 

public class AddingListViewActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //---------------------------------------------------
        
        ListView listViewExample = (ListView)findViewById(R.id.listViewExample);
        ArrayAdapter<CharSequence> adapterOfListViewExample = ArrayAdapter.createFromResource(
           this,
           R.array.str_languages,
           android.R.layout.simple_list_item_1);
        listViewExample.setAdapter(adapterOfListViewExample);
    }
}

 

첨부 파일에 예를 압축하여 올렸습니다. 필요하신 분들께서는 사용하세요.

 

 

마치며...

지금까지 ListView 뷰를 정의하는 방법에 대해 정리해 보았습니다. 이 뷰의 항목을 사용자가 선택할 때 추가적인 작업을 구현할 수 있습니다. 이에 대해서는 다음 포스트에 정리할 예정입니다.


출처 : http://netrance.blog.me/110133870852