안드 공부하는데 나오는 거 요약 좀 해야겠다...
ListView란
ListView는 ViewGroup의 한 종류이다.
안드로이드 사용자 인터페이스의 모든 요소는 View의 서브 클래스다. TextView, Button, CheckBox 등이 있다. 뷰들은 위젯(widget) 또는 컴포넌트(component)라고도 한다. 이런 뷰들이 여러 개로 구성되어 있는 경우를 복합 뷰라고도 하며 이것이 ViewGroup이다.
ViewGroup은 자체가 View를 상속받기 때문에 구성에 View뿐만 아니라 ViewGroup도 포함할 수 있다.
ListView가 View를 효율적으로 관리하는 역할도 한다. ListView는 Item들을 세로 방향으로 정렬해서 나열해주는데 화면에 보이는 View들만 생성하여 보여주고 있다가 화면을 위아래로 스크롤 시에 보이지 않게 된 부분의 기존 View를 메모리에서 해제한 뒤, 재활용하여 새롭게 보이게 되는 View를 구성하게 된다.
Adapter
ListView에 데이터를 추가하여 화면에 표시하기 위해서 사용한다. 이때 ViewGroup에 추가되는 데이터이기 때문에 당연히 View가 추가된다. 사용자가 정의한 데이터를 ListView에 출력하기 위해 사용하는 객체로, 사용자 데이터와 화면 출력 View로 이루어진 두 개의 부분을 이어주는 객체이다. 즉, Adapter가 하는 역할은 사용자 데이터를 입력받아 View를 생성하는 것이며 Adapter에서 생성되는 View는 ListView 내 하나의 아이템 영역에 표시되는 것이다.
Extension
기본적으로 제공하는 ListView는 문자열을 출력하는 TextView만을 포함하는 구조이다. 하지만 커스텀을 통해 기능을 확장하여 다른 컴포넌트들을 그대로 사용할 수 있다. 즉, TextView뿐만 아니라 ImageView, Button 등을 원하는 데로 배치해서 사용할 수 있다.
커스텀을 하기 위해서는 ListView 아이템에 대한 Layout을 구성해야 하고, Layout에 출력될 데이터에 대한 클래스도 새로 정의가 필요하며, 사용자 데이터를 Layout에 정의된 형태의 View로 변환하기 위한 Adapter 클래스도 상속받아 필요한 함수를 채워줘야 한다.
이외의 전반적인 workflow나 코드 예시는 참고 링크로 가서 확인
<참고>
ArrayList를 이용해서 데이터를 넣고, ArrayAdapter로 TextView로 구성된 View를 받아오는 예시 1
ArrayList를 이용해서 데이터를 넣고, ArrayAdapter로 TextView로 구성된 View를 받아오는 예시 2
'study > android' 카테고리의 다른 글
[android] LayoutInflater & Factory Method (0) | 2019.09.17 |
---|---|
[android] ViewPager & PagerAdapter + LayoutInflater (0) | 2019.09.17 |
[android] drawable (0) | 2019.09.17 |
[android] Activity & Intent (0) | 2019.09.10 |
[android] Toast 메시지 -Context (0) | 2019.09.08 |