-
리스트뷰(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