이 글은 이것이 안드로이드다 with 코틀린(개정판)을 참고하여 작성하였습니다.
작성자 : 홍수정
개발환경은Mac.os, Android Studio입니다.
출처 : 안드로이드 Developers 글도 같이 참고해서 포스팅한 글입니다.
RecyclerView로 동적 목록 만들기 | Android 개발자 | Android Developers
RecyclerView로 동적 목록 만들기 Android Jetpack의 구성요소 RecyclerView를 사용하면 대량의 데이터 세트를 효율적으로 표시할 수 있습니다. 개발자가 데이터를 제공하고 각 항목의 모양을 정의하면 R
developer.android.com
1. Recycler View 란?
RecyclerView를 사용하면 대량의 데이터 세트를 효율적으로 표시할 수 있다.
이름에서 알 수 있듯이 RecyclerView는 개별 요소를 재활용한다. 항목이 스크롤되어 화면에서 벗어나더라도 RecyclerView는 뷰를 제거하지 않고, 화면에서 스크롤된 새 항목의 뷰를 재사용한다.
(ex. 한 화면에 목록이 10개까지밖에 안보이고 전체 목록은 20개라면 10개 이후의 목록을 보기 위해 스크롤을 내릴 때 항목들을 재사용해서 나타낸다는 뜻)
2. RecyclerView 구현 단계
1. 목록 또는 그리드의 모양을 결정 (보통 Layout 관리자 중 하나를 사용할 수 있다.)
2. 목록에 있는 각 요소의 모양과 동작 방식 설계 => 설계에 따라 viewHolder 클래스 확장
3. 데이터를 viewHolder 뷰와 연결하는 Adapter를 정의한다.
▼ 더 구체적인 이론설명은 필기 사진으로 대체
2. RecyclerView 실습 및 설명
mainActivity 코드
Memo
ⓐ 어댑터는 데이터로부터 Recycler View에 보일 아이템 뷰 (즉, 우리가 화면에서 볼 리스트의 각 항목들)를 만든다. 그렇기 때문에 Data를 불러온 후, 어댑터를 생성하여 화면의 RecylerView와 연결하는 것이다.
ⓑ loadData()는 Memo라는 데이터 클래스를 만든 것을 요소로 갖는 memoList를 for문을 통해 title과 날짜, 그리고 해당 항목 숫자를 Memo클래스에 대입하여 만든 후, memoList의 요소로 저장하게 한다.
(memoList=[<Memo>클래스1, <Memo>클래스2, ...] 의 형태가 됨)
그렇게되면 100개의 Memo 클래스를 넘겨받을 수 있게된다.
(*ViewHolder(뷰홀더)란 view를 보관하는 Holder 객체를 뜻함)
ⓒ CustomAdatper 클래스를 통해 loadData()를 통해 만든 데이터 리스트를 사용하여 화면에 출력할 수 있게끔 한다.
ⓒ-1 onCreateViewHolder : RecyclerView가 ViewHolder를 새로 만들어야 할 때마다 호출되는 메서드.
ViewHolder와 연결된 View 를 생성하고 초기화
ⓒ-2 onBindViewHolder : RecyclerView가 ViewHolder를 데이터와 연결할 때 호출되는 메서드 데이터에서 각 항목들을 가져와 세팅해준다.
(데이터를 사용하여 항목의 각 텍스트라던지 그런것들을 세팅할 수 있음)
ⓒ-3 getItemCount : RecyclerView가 데이터 세트의 크기를 가져올 때 호출되는 메서드
mainActivity xml
item_recycler.xml
각 항목에 보일 디자인을 만들기 위해 item_recycler.xml을 만들어주고 item_recycler를 담을, RecyclerView를 포함한 xml을 만들어준다.
즉, 전체적으로 간략하게 과정을 정리해보자면 다음과 같다.
(1) RecyclerView가 들어갈 xml과 ItemView가 들어갈 xml을 추가 => (2) RecyclerView 어댑터와 ViewHolder 구현 =>
(3) LayoutMananger와 어댑터 설정 (레이아웃 매니저는 목록을 어떤 형태로 보여줄지 정해주는 역할)
4. RecyclerView 실행화면
'GDSC HUFS 3기 > Android with Kotlin Team 5' 카테고리의 다른 글
[5팀] 코틀린 안드로이드 기초강의_39~40 | 파일 입출력, SharedPrefere (0) | 2021.11.23 |
---|---|
[5팀] 코틀린 안드로이드 기초강의_31~32 | 프래그먼트 (0) | 2021.11.03 |
[5팀] 코틀린 안드로이드 기초강의_27~28 | 액티비티 ,스피너(1) (0) | 2021.11.01 |
[5팀] 코틀린 안드로이드 기초강의_25~26 | 시크바, 레이팅바 (0) | 2021.10.29 |
[5팀] 코틀린 안드로이드 기초강의_18~21 | 에디트텍스트, 라디오그룹&버튼 (0) | 2021.10.29 |