제어 즐겨찾기 영역에서 기기 호출 후, observe 메소드가 활성화되면서 발생하는 notifyDataSetChanged()의 실행 과정 및 이후 setInitCallback() 호출 메커니즘에 대해 분석한 내용을 정리 해 두고자 한다.
notifyDataSetChanged() 실행의 의미
- notifyDataSetChanged()를 호출하면, 이는 RecyclerView에 데이터셋이 변경되었음을 알리고 UI를 갱신하라는 신호를 보내는 역할을 한다.
- 데이터셋의 변경 사항을 RecyclerView가 감지하고, 이에 따라 UI를 업데이트하는 과정이 시작된다.
setInitCallback() 호출 과정
- ControlAdapter 내부 코드 분석 결과, onBindViewHolder 메소드에서 아이템에 대한 bind 메소드를 호출하는 과정에서 setInitCallback()이 조건에 따라 실행된다.
- initCallback이 null이 아닐 경우, 해당 콜백을 통해 아이템 뷰와 데이터의 초기화나 추가 설정을 수행할 수 있다.
notifyDataSetChanged() 이후 호출되는 주요 메소드 순서
- notifyDataSetChanged() 호출
데이터셋 변경을 알리고, 리사이클러뷰에 UI 갱신을 요청한다. - getItemCount() 호출
변경된 데이터셋의 아이템 개수를 확인한다. - onCreateViewHolder() 호출 (필요 시)|
새로운 아이템 뷰가 필요한 경우, 새로운 뷰 홀더를 생성한다 - onBindViewHolder() 호출
아이템 뷰에 데이터를 바인딩합니다. notifyDataSetChanged()로 인해 모든 보이는 아이템 뷰들이 재바인딩될 수 있다. - onViewAttachedToWindow() 및 onViewDetachedFromWindow() 호출 (화면에 추가/제거 시)
아이템 뷰가 리사이클러뷰에 추가되거나 제거될 때 호출된다. - onViewRecycled() 호출 (뷰 재활용 시)
더 이상 화면에 보이지 않는 아이템 뷰는 재활용을 위해 호출된다.
notifyDataSetChanged() 호출 후 리사이클러뷰는 위의 과정을 통해 변경된 데이터셋에 맞춰 UI를 업데이트한다.
이 과정에서 추가적인 콜백 메소드인 setInitCallback()을 통해 특정 초기화 작업이 수행될 수 있음을 알 수 있다.
참고: https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.Adapter
RecyclerView.Adapter | Android Developers
androidx.appsearch.builtintypes.properties
developer.android.com
반응형
'Android > Android Core' 카테고리의 다른 글
[Android] RecyclerView 데이터 변경 시 UI 업데이트 최적화를 위한 알림 메서드 활용법 (0) | 2024.04.21 |
---|---|
[Android] LiveData의 이해: Android 앱에서 데이터와 UI의 효율적 동기화 (0) | 2024.04.21 |
[Android] RecyclerView의 성능 비결: ViewHolder 사용의 중요성 (2) | 2024.04.21 |
[Android] 안드로이드에서 FLAG_ACTIVITY_REORDER_TO_FRONT 플래그를 활용한 효율적인 액티비티 관리 (0) | 2024.04.08 |
[Android] 안드로이드에서 BroadcastReceiver 활용하기: 정적 및 동적 등록과 명시적 vs 암시적 브로드캐스트 전송 이해하기 (0) | 2024.04.05 |