반응형

연락처 앱에서 볼 수 있는 리스트는 어떻게 만들 수 있는 걸까요?

리스트 안에 들어가 있는 각각의 데이터는 같은 모양이 계속 반복되면서 보이는데 이 경우에 어떻게 레이아웃을 만들어야 할까요?

리스트뷰에는 여러 개의 데이터를 넣어 보여줄 수 있는데, 좀 더 쉽게 만들 수 있도록 어댑터라는 것을 만들어 사용합니다.

어댑터라는 것을 사용해야 하니까 처음에는 복잡하게 느껴지지만 리스트뷰뿐만 아니라 격자형태로 보여주는 그리드뷰나 콤보박스 모양의 스피너에도 비슷한 방식으로 사용된다는 걸 알게 되면 여러 개의 아이템을 보여주는 경우에는 비슷한 방식으로 사용한다는 걸 알게 될 겁니다.

리스트뷰를 어떻게 사용하는지 알아봅시다.



리스트뷰 (ListView)

여러 개의 아이템 중에서 하나를 선택하는 방식을 가진 선택 위젯은 어댑터를 사용합니다.

화면에 보이는 뷰가 데이터를 관리하는 것이 아니라 어댑터가 데이터를 관리하는 방식을 사용하게 되죠.

어댑터는 데이터를 관리하면서 동시에 위젯을 통해 보일 각각의 아이템을 위해 뷰를 만들어주기까지 합니다.

리스트뷰는 여러 개의 아이템을 위, 아래로 스크롤할 수 있게 해주면 그 안에 들어가 있는 각각의 아이템을 순서대로 보여주는 역할을 합니다.

각각의 아이템은 독립적인 뷰로 만들어지게 되고 이 뷰들이 모여있는 형태를 유지해 주는 것이 리스트뷰인 거죠.

주의할 점은 리스트 아이템의 데이터는 리스트뷰가 관리하는 것이 아니라 어댑터에서 관리한다는 것입니다.

그리고 어댑터를 리스트뷰에 설정하면 리스트뷰는 어댑터에게 데이터나 각각의 아이템을 위한 뷰에 관해 물어보게 됩니다.

각각의 아이템을 위한 뷰도 어댑터에서 만들어주기 때문에 리스트뷰는 어댑터의 getView 메소드를 호출하여 뷰 객체를 반환받은 후 화면에 보여주게 됩니다.



*** 최근 실무에서는 리스트뷰(ListView)보다는 리사이클러뷰(RecyclerView)를 많이 사용합니다. 다만 리스트뷰에 대한 내용을 이해하는 것이 리사이클러뷰를 만들 때도 기본이 되므로 먼저 학습해봅니다. 리사이클러뷰에 대해서는 강좌 7-4를  보시기 바랍니다. ***



Q.리스트뷰의 각 아이템으로 보이는 레이아웃에도 프레임레이아웃이나 상대레이아웃을 사용할 수 있을까요?

A.두 레이아웃 역시 뷰 객체이므로 사용할 수 있을 것 같습니다.


Q.어댑터 안에 정의한 ArrayList 객체 안에 들어가는 원소의 자료형은 어떤 것이든 가능한 걸까요?

A.네 어느 것이든 가능합니다만 generic을 사용하여 한가지 자료형만 add될 수 있도록 지정해줄 수도 있습니다.


Q.만약 그렇다면 화면에 보이는 아이템의 레이아웃과 함께 수정해야 할까요?

A.데이터에 해당하는 ArrayList와 레이아웃은 분리되어 있으므로 수정할 필요가 없습니다.


반응형

'안드로이드 개발 > 부스트코스(안드로이드 프로그래밍)' 카테고리의 다른 글

그리드뷰  (0) 2019.03.06
스피너(combobox) 사용하기  (0) 2019.03.06
인플레이션 이해하기  (0) 2019.03.05
비트맵 버튼 만들기  (0) 2019.03.05
나인패치 이미지  (0) 2019.03.05
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기