안드로이드 개발 질문/답변
(글 수 45,052)
검색을 해보고 해도 잘 이해가 되지 않습니다.
ListView를 사용할때
list.xml
생략
<ListView android:id="@android:id/list" .. 생략/>
<TextView android:id="@android:id/empty" 생략/>
이렇게 뷰를 만들었습니다.
그런데 ArrayAdapter에 지정할 새로운 뷰를 만들어야 된다는게 이해가 안됩니다. 내용이있을때 ListView라는곳에 출력하면 되는게 아닌가해서요. 책이나 인터넷이나 공통되게 행을 표현할수 있는 View를 위해서 만들어야 한다고하는데 행을 <LIstView ... android/id/list>여기 표현하면 안되는건가요?
<ListView/>는 그럼 어디에 쓰는지 모르겠습니다.
개념이 확실히 잡히지 않습니다. 고수님들 답변달아주시면 감사하겠습니다. ^^
ListView를 사용할때
list.xml
생략
<ListView android:id="@android:id/list" .. 생략/>
<TextView android:id="@android:id/empty" 생략/>
이렇게 뷰를 만들었습니다.
그런데 ArrayAdapter에 지정할 새로운 뷰를 만들어야 된다는게 이해가 안됩니다. 내용이있을때 ListView라는곳에 출력하면 되는게 아닌가해서요. 책이나 인터넷이나 공통되게 행을 표현할수 있는 View를 위해서 만들어야 한다고하는데 행을 <LIstView ... android/id/list>여기 표현하면 안되는건가요?
<ListView/>는 그럼 어디에 쓰는지 모르겠습니다.
개념이 확실히 잡히지 않습니다. 고수님들 답변달아주시면 감사하겠습니다. ^^
2010.08.04 16:16:29
ArrayAdapter 생성자에서 R.상수를 매개변수로 받는거 같아서요. 안받고는 생성이 안되는거같은데..... 임의의 값을 넘겨주니 로그를 보니 Resource Not Found 익셉션이 뜹니다.
2010.08.04 16:21:52
죄송합니다. 제가 했던걸 보니 그냥 간단하게 TextView 하나 들어있는 layout을 만들어서 사용했엇네요.
layout 파일 따로 만들기 싫으시면 동적으로도 레이아웃 생성이 가능한데 그 방법을 찾아보시는것도..
layout 파일 따로 만들기 싫으시면 동적으로도 레이아웃 생성이 가능한데 그 방법을 찾아보시는것도..
2010.08.04 16:27:15
리스트의 구성은 ListView(리스트 전체)와 항목(Item)의 View 들로 구성되어있습니다.
ListView는 기본적으로 비슷한 출력 유형을 갖는 아이템을 나열할때 유용하게 쓰이는 View입니다.
"비슷한 출력 유형"을 정의한 View가 당연히 필요하겠죠? 그게 매개변수로 넘겨주는 그 Layout 리소스입니다.
Adapter는 데이터를 통해 View를 완성시켜 ListView의 요청이 있을때 Item의 View를 넘겨주는 역할을 하는거구요.
ListView는 기본적으로 비슷한 출력 유형을 갖는 아이템을 나열할때 유용하게 쓰이는 View입니다.
"비슷한 출력 유형"을 정의한 View가 당연히 필요하겠죠? 그게 매개변수로 넘겨주는 그 Layout 리소스입니다.
Adapter는 데이터를 통해 View를 완성시켜 ListView의 요청이 있을때 Item의 View를 넘겨주는 역할을 하는거구요.
2010.08.04 16:28:33
아 그런거였군요. 정말 감사합니다. ListView가 라디오 그룹가 같은 역할을 하는건 아닌가 혹시 레이아웃중에 하나는 아닌가 하는 생각들을 해봤는데. 정리되었네요 정말 감사합니다 ^^
2010.08.04 16:40:33
만약 ListView라는 넘이 Item을 출력하는 방식을 Customize 하지 않게 작성한다면 이런 구조를 가질 필요가 없었겠죠.
하지만 현재 ListView는 얼마든지 아이템의 출력 유형을 바꿀수 있고 이를 가장 편하게 만들기 위해 Adapter를 쓰게 된거죠.
Adapter의 입장에서 볼때 Item을 출력하기 위한 레이아웃이 필요하기 때문에 이를 인수로 받는거구요.
ListView는 그 자체가 View로서 Layout이 필요하게 된겁니다.
ListView없이 Item만 널려있다면 나름 문제가 될겁니다. Visibility관리등이 힘들어질테니 어차피 레이아웃으 한번 더 둘러싸겠죠.




각각의 리스트아이템을 입맞에 맞게 커스터마이징 하려고 뷰를 따로 만드는거죠.