-
리스트뷰(ListView)란 데이터 목록을 화면에 출력하는 뷰이다. 텍스트, 사진, 버튼 혹은 사용자가 정의한 구조 등을 출력할 수 있고, 데이터 목록이 화면을 넘어가면 스크롤을 이용할 수 있도록 제공한다.
쉽게 말하자면 카카오톡의 채팅창 목록도 리스트뷰다. 같은 형태의 데이터가 이어져 있는 모습이다.
어댑터(Adapter)란 데이터와 리스트뷰를 연결해 주는 관리자이다.
배열에 저장되어 있는 데이터를 리스트뷰에 띄울 수 있도록 도와준다.
activity_main.xml
뷰를 끌어다 놓을 수 있는 Palette 에서 Legacy - ListView를 찾아 끌어다 놓으시면 추가가 가능하다.
xml은 저번 글에서 적어놨었다.
MainActivity.kt
① 우선, 띄우고 싶은 데이터들을 배열에 저장해야 한다.
ArrayList를 써도 되고 ArrayOf를 써도 되고 원하는 걸 사용해준다.
나는 도시의 목록을 저장하는 ArrayList를 하나 생성했다.
그리고 add 명령어를 통해 도시 이름을 저장해 주었다.
② 그다음 어댑터를 생성해 준다.
ArrayAdapter의 파라미터 값은 각각 이런 뜻을 가지고 있다고 한다.
this
이 어댑터를 가지는 액티비티를 적어주시면 된다. MainActivity(현재 액티비티)를 뜻하는 this를 적어준다.
android.R.layout.simple_list_item_1
리스트뷰에 데이터 목록을 띄울 때 어떤 모양으로 띄울지 정한다. simple_list_item_1이 안드로이드 스튜디오에서 미리 만들어놓고 제공하는 그 구조의 이름이고 그 왼쪽 것들은 상위 폴더 이름들이다.
cities
데이터가 들어있는 배열을 적어주시면 됩니다.
③ 마지막으로 생성하신 어댑터를 리스트뷰에 연결해 주면 된다.
리스트뷰id.adapter = 생성한 어댑터
이렇게 작성하면 된다.
여기까지만 작성하고 실행해보시면 이렇게 리스트뷰를 확인하실 수 있다.
리스트뷰 클릭 이벤트
.문자 앱에서 문자 목록을 클릭하거나 카카오톡에서 대화 목록을 클릭하면 어떠한 동작을 한다.
그것처럼 리스트뷰의 데이터 목록을 클릭하면 어떠한 이벤트를 할지 정할 수가 있다.
우선 선택 모드를 설정해 준다.
나는 하나씩만 선택할 수 있도록 단일 선택 모드를 골랐다.
그리고 버튼에 리스너를 붙이듯이 리스트뷰에도 setOnItemClickListener라는 리스너를 붙이면 된다.
여기에는 총 4가지의 파라미터 값이 있습니다.
parent : 클릭한 항목의 어댑터 뷰. 여기서는 parent가 리스트뷰가 되겠다.
view : 클릭한 항목의 뷰
position : 클릭한 항목의 인덱스
id : 클릭한 항목의 id 리스트뷰에서는 position과 값이 똑같다
여기서는 posititon을 이용해 어떤 항목이 클릭되었는지 메시지를 간단하게 띄워봤다.
'Android' 카테고리의 다른 글
파이어베이스 데이터 읽기 (0) 2022.08.17 리사이클러뷰 (0) 2022.08.15 텍스트 입력 이벤트 처리 (0) 2022.08.10 플로팅 액션 버튼 (0) 2022.08.09 키 이벤트 처리하기 (0) 2022.08.08