1. Terms
Adapter : data set을 제공하는 뷰를 컨트롤gksek..
Position: Adapter내에 항목 하나하나의 위치
Index: getChildAt(Int)로 호출되고, Postion에 대비된다. (Position을 구할 때 사용한다)
Binding: Adapter내의 위치한 항목의 child view를 보여주기 위한 준비과정이다.
Recycle: 특정한 어댑터의 포지션이 캐시에 저장된다. 그리고 이 캐시정보는 같은 타입의 데이터를 보여주기위해 재사용(Recycle) 된다. 이는 초기 레이아웃 생성 과정을 생략함으로써 극적인 성능 향상 효과를 일으킨다.
Scrap: ?? 임시적으로 레이아웃에서 빠져있는 자식 뷰이다. Scrap view는 완전히 부모 RecyclerView로부터 떼어내지지 않고 재사용 될 수 있다. 리바인딩이 요구되지 않고 수정되지 않았거나 adapter에 의해 수정되고 완전히 dirty상태가 되었을 때
2. RecyclerView Component
- Data List: array , string-array 등의 자료구조로 item 들이 나열된 List
- Adapter : data set을 관리하고 Data List로부터 item view 생성
- Layout Manager : RecyclerView 내부에서의 Item view의 layout 결정
- RecyclerView : 갖가지 data를 리스트 형태로 화면에 표시하는 컨테이너
3. Adapter Class 필수 메소드
- onCreateViewHolder
ViewHolder 생성하여 return (화면을 채울 정도로만 View 객체 생성)
이미 생성되어있는 View Holder는 Item들에 대한 캐시정보로 가지고 있기 때문에
스크롤로 내리면 이미 들고있는 item을 보여줌 (리스트 아이템을 재생성할 필요가 X)
화면에 표시될 Item View를 참조할 객체, 이미 생성된 View holder를 reuse
- onBindViewHolder: RecyclerView ViewHolder itemView에 대한 contents (변수들)을 업데이트하는 메소드
- getItemCount : Item 총 갯수 반환
inflation : 메모리에 Instance화 시킴.
4. 예제
RecycleAdapter Class
values - Colors in colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="colorRed">#FFFF0000</color>
<color name="colorOrange">#FFFF7F00</color>
<color name="colorYellow">#FFFFFF00</color>
<color name="colorGreen">#008000</color>
<color name="colorBlue">#0000FF</color>
<color name="colorIndigo">#4b0082</color>
<color name="colorPurple">#800080</color>
<array name="rainbowColor">
<item>@color/colorRed</item>
<item>@color/colorOrange</item>
<item>@color/colorYellow</item>
<item>@color/colorGreen</item>
<item>@color/colorBlue</item>
<item>@color/colorIndigo</item>
<item>@color/colorPurple</item>
</array>
</resources>
color 같은 경우도 colors.xml파일에
array 형태로 저장할 수 있고
.kt 에서 끌어다 쓸 때에는
IntArray type으로 끌어다 써야함. (Color Hash Code는 모두 Integer Type)
[Reference]
https://recipes4dev.tistory.com/154
https://developer.android.com/reference/android/support/v7/widget/RecyclerView
'Android' 카테고리의 다른 글
[Android] Setting Export/Import (0) | 2020.05.04 |
---|---|
[Android] Android Studio 자주쓰는 단축키 정리 (0) | 2020.05.04 |
[Android] Back Stack & Task (0) | 2020.05.01 |
[Android] AdapterView (0) | 2020.04.24 |
[Android] Fragment (0) | 2020.04.13 |