GDSC HUFS 3기/Android with Kotlin Team 2

[2팀] Ind 30 화면 구성하기: 리사이클러뷰(RecylerView)

kangbongja 2021. 11. 3. 17:26

이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.

작성자 : 김현주 

개발환경은 Windows, Android Studio입니다. 

 

1. RecylerView? 

 

앱에서 관리되는 데이터 집합을 화면에 유연하게 표시할 때 사용되는 뷰 그룹(View Group)

Ex)

 

2. Android Studio를 통한 구현 

 

엑티비티 메인 > 리사이클뷰 (컴포넌트 가져옴) > 기본적으로 IDConstraint 설정 // 타이틀 : RecycleView 

RV 아래에 item 목록

Item에 먹이는 view를 생성하기 위해

res 디렉터리에서 필요한 xml 생성. Ex) item_recycler

item_recycler의 layout을 constraint에서 linear로 바꿔준다. (애초에 생성 단계에서 Root Element 항목을 바꿔주어도 됨)

현재 레이아웃에서 textView 3개를 넣은 뒤

속성의 weight값을 1 5 3으로 먹인 상태. (전체 9)

* Layout_width 값을 0dp 설정해야 비율이 적용됨

orientation 속성을 center_vertical,

텍스트뷰의 ID를 각각 textNo, textTitle, textDate로 바꿔준 레이아웃 상태

*text 속성을 알아보기 좋게 정리. (컴포넌트 아님 textView 컴포넌트의 text 속성임)

Memo라는 이름의 date class 생성.

Item(함수를 통해)의도하는 바를 먹이는 (데이터를 뿌려주는) 데이터 클래스를 생성

 

RecyclerView.Adapter<> 에서 제네릭은 Holder, 작성하고 Alt 엔터 누르면 CustomAdapter.~ 자동빌드 어댑터 안에서 Ctrl + i : 필수 메소드 호출 이하 Holder는 어댑터 밖에서 쓰일 일 없으니 내장클래스

어댑터 만들기

어댑터가 홀더를 가지고 item layout에 값을 세팅하기 위함.

이제 빈 깡통에 채워넣기

화면에 보이는 만큼만 item 생성해놓고 스크롤하면

Item 1부터 재사용 : RecyclerView

       *InflateLayoutInflater, parent, attachToparent 인자 있는거로 사용

논리 : 

onCreateViewHolder 생성  

getItemCount 카운팅

onBindViewHolder 재사용 > 메모리 절약 *****

4.레이아웃 매니저 설정에 따라 데이터가 뿌려지는 방식이 달라짐 ex) 격자무늬 or 그리드 형태
AVD : 그리드 형태로 100개 데이터 리사이클러뷰에 뿌려짐.

***왕중요

아이템에 대한 클릭동작 : 리스너를 달지말고

Init을 통해서만 먹임

*** setMemo 같은 내에서 리스너 binding하면 앱 터짐 (드래그 할 때마다 동작 호출되니까)

currentMemo를 사용하여 (스크롤 뷰에도 먹이고) memo클래스가 가진 모든데이터 사용가능