1. xml만들기(activity_listView.xml)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
우선 전체화면을 구성할 xml을 생성후 ListView를 추가시켜준다.
2. GetView에 의해 뿌려지게될 리스트 xml파일 만들기(list_item.xml)
안드로이드에서는 기본으로 주어지는 레이아웃이 있지만 직접 만들어서 해보도록한다.
참고로 안드로이드에서 기본으로 주어지는 레이아웃은
안드로이드SDK폴더 > platforms > android-? > data > res > layout에서 확인할수있다.
간단한 리스트를 만들고자한다면 xml을 직접만들필요없이 simple_list_item_1을 이용하여 만들수있다.
simple_list_item_1는 시스템에서 제공하는 레이아웃으로 리소스 접근시에는
android.R.layout.simple_list_item_1 을 이용하여 접근하도록한다.
좀더 복잡한 리스트를 만들기위해 xml을 직접 만든다면 시스템에서 제공하는 레이아웃을 참고하여 만드는것도 좋은방법이다.
위 xml을 보면 알겠지만 리스트뷰는 item목록뿐만아니라 왼쪽에 이미지를 추가하여 리스트뷰를 구성한다.
4. MyData 클래스생성(ListViewActivity.java)
ListView에 출력하게될 이미지(mImage)와 아이템이름(mNmae)을 묶어서 관리할 MyData클래스를 생성
3. ListView에 추가할 데이터생성(ListViewActivity.java)
getList() 함수를 만들어 getList호출시 ArrayList를 생성하여 데이터추가후 그에대한 참고값을 반환하도록함.
4. BaseAdapter를 상속받은 MyAdapter클래스 생성 (ListViewActivity.java)
BaseAdapter를 상속받은 MyAdapter를 생성하면 BaseAdapter내에 정의된 추상메소드를 구현해야한다. 구현해야할 메소드는 getCount(), getItem(), getItemId(int position), getView(int position, View convertView, ViewGroup parent)이다.
1) BaseAdapter선언시 getList에 의해 반환된 ArrayList참조변수를 받아서 ListView를 구현할것이기때문에 위와같이 정의한다.
2) BaseAdapter 추상클래스의 추상메소드 구현
BaseAdapter를 상속받은 MyAdapter를 생성하면 BaseAdapter내에 정의된 추상메소드를 구현해야한다. 구현해야할 메소드는 getCount(), getItem(), getItemId(int position), getView(int position, View convertView, ViewGroup parent)이다.
- getCount(), getItem(), getItemId() 구현
getCount() : 리스트의 갯수를 반환해주는 함수로 ArrayList의 사이즈를 반환해주면된다 - mList.size()
getItem() : 전달받은 position의 위치의 item을 리턴 - mList.get(position)
getItemId() : 해당 Item를 나타내는 고유한정보로 position을 리턴해주면된다.
- getView 구현
자세한내용은 주석참고
'Developer > Android' 카테고리의 다른 글
Fragment (0) | 2014.07.10 |
---|---|
안드로이드 Bitmap 이미지파일 크기(용량, 사이즈) 줄이는 방법 (0) | 2012.07.04 |
AdapterView(1) (0) | 2012.07.04 |
Hanlder를 이용한 타이머이벤트 (0) | 2012.07.04 |
Anroid 옵션메뉴 (0) | 2012.07.04 |