면접을 보게되었는데, 신경쓰지 않고 있었던 RecyclerView의 순서에 대해 질문이 들어왔다.
항상 RecyclerView의 adapter를 구현할 때마다 반드시 오버라이드 해야 하는 메서드는 3개
그런데 한 개의 중요한 메서드가 또 있었다! getItemViewType()
사실 나도 선물 기록 어플리케이션을 하며 사용했었던 메서드였는데
그때는 처음 들은 것 처럼 또잉,,? 그것이 모지,,?라는 생각이 가득했다.
그래서 호출 순서를 정리해보아야겠다.
주로 오버라이드하여 사용되는 메서드는 4개!
onCreateViewHolder()
public final VH createViewHolder(ViewGroup parent, int viewType) { ... }
👉 정의한 ViewHolder를 생성하고 ViewHolder 안에 정의한 필드들을 초기화한다.
onBindViewHolder()
public final void bindViewHolder(VH holder, int position) { ... }
👉 createViewHolder를 통해 생성된 ViewHolder의 position에 맞게 data들을 업데이트한다.
getItemCount()
public abstract int getItemCount() { ... }
👉 Adapter가 보유하고 있는 data set의 아이템의 총 개수
getItemViewType()
public int getItemViewType(int position) { ... }
👉 재활용되는(recyclering) view의 위치에 해당하는 item의 view type을 반환
RecyclerView가 실행되었을 때 실행되는 순서
1. 현재 list에 존재하는 item의 개수를 파악
2. 해당 item에 맞는 view Type을 얻어와서
3. 해당 view Type에 맞는 viewHolder를 생성
4. 생성된 viewHolder에 data를 binding
그럼 만약 RecyclerView의 List가 비어있을때는?
item의 개수를 파악한 후, 개수가 0개이므로 더 이상 진행하지 않는다.
'Android > note' 카테고리의 다른 글
[Android] Firebase Realtime Database를 REST로 사용할 때 key값에 "이제는" 접근한 사람 (0) | 2022.04.12 |
---|---|
[android] Firebase Realtime Database를 REST로 사용할 때 key값에 접근하지 못한 사람 (0) | 2022.04.06 |
Uni-Directional Architecture (0) | 2022.02.24 |
[Android] Design Pattern - MVC, MVP, MVVM (0) | 2022.02.10 |
firebase realtime database 데이터 삭제해도 adapter에 남아있을 때 (0) | 2022.01.22 |