ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리스트뷰와 어댑터
    Android 2022. 8. 13. 18:22

    리스트뷰(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
Designed by Tistory.