728x90

ListView는 사용자가 정의한 데이터 목록을 아이템 단위로 구성하여 화면에 출력하는 ViewGroup의 한 종류다.
즉, ListView 는 어댑터(Adapter)를 통해 데이터를 뿌려주는 형식의 View 다.

ListView는 항목들을 수직으로 보여주는 어댑터 뷰로 상하로 스크롤이 가능하다.

ListView에 표시되는 아이템은 단순히 Text만 출력하는 구조가 될 수 있고, Image, Button, CheckBox 등 여러 View의 조합으로 구성되는 좀 더 복잡한 형태(Custom)가 될 수도 있다.

가장 간단하게 텍스트만 보여주는 예제를 살펴보자.

번호 1, 번호2, 번호 3과의 관계가 어떻게 되는지 아래 코드에서 보면된다.


 3번 화면에 출력할 ListView 추가 (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

</RelativeLayout>

 1번 배열 리스트 생성 및 2번 어댑터 생성, ListView에 어댑터 연결

 public class MainActivity extends AppCompatActivity {

    ArrayList<String> arrayList = null;
    ArrayAdapter<String> adapter = null;
    ListView listView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 데이터 배열 리스트 생성
        arrayList = new ArrayList<String>();
        arrayList.add("이순신");
        arrayList.add("홍길동");
        arrayList.add("유관순");
        arrayList.add("강감찬");
        arrayList.add("김유신");
        arrayList.add("강길덕");

        // 어댑터 생성 (안드로이드에서 기본 제공하는 어댑터 활용)
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList);

        // AdapterView
        listView = (ListView) findViewById(R.id.istview_01);
        listView.setAdapter(adapter); // ListView 에 어댑터 설정
    }
}


이렇게 데이터 배열 리스트를 생성하는 경우는 없지만 개념으로 알아두자.


ArrayAdapter(Context context, int textViewResourceID, 배열);

- context : 현재 어플리케이션 컨텍스트

- int textViewResourceID : 레이아웃 아이디


ArrayAdapter 클래스는 제네릭 클래스로 정의되어 있다.

android.R.layout.simple_list_item_1 은 안드로이드 시스템 내부에 미리 만들어진 리소스중 하나로 SDK를 설치하면 자동으로 설치되며 어떠한 추가 작업 없이 개발자가 바로 사용할 수 있다.

 android.R.layout.simple_list_item_1

 하나의 텍스트 뷰 사용

 android.R.layout.simple_list_item_checked

 항목당 체크 표시

 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE)

 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)



이제 데이터 리스트 배열을 만드는 방법을 바꿔보자.


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="contact">
        <item>김유신 010-0001-00001</item>
        <item>강감찬 010-0001-00002</item>
        <item>이순신 010-0001-00003</item>
        <item>유관순 010-0001-00004</item>
        <item>홍길동 010-0001-00005</item>
        <item>사임당 010-0001-00006</item>
        <item>최영 010-0001-00007</item>
        <item>이성계 010-0001-00008</item>
        <item>이방원 010-0001-00009</item>
        <item>정몽주 010-0001-00010</item>
        <item>김태성 010-0001-00011</item>
        <item>강길덕 010-0001-00012</item>
    </string-array>
</resources>


 public class MainActivity extends AppCompatActivity {

    ArrayAdapter<CharSequence> adapter = null;
    ListView listView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        adapter = ArrayAdapter.createFromResource(
                                this,R.array.contact,android.R.layout.simple_list_item_checked);

        listView = (ListView) findViewById(R.id.listview_01);

        listView.setAdapter(adapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        ColorDrawable colorDrawable = new ColorDrawable(Color.RED);
        listView.setDivider(colorDrawable);
        listView.setDividerHeight(3);
    }
}


블로그 이미지

Link2Me

,