본문 바로가기
Android

[Android] RecyclerView에서 notifyDataSetChanged() 호출 후 콜백 메소드 활용하기: setInitCallback() 호출 과정 분석

by quessr 2024. 4. 21.


제어 즐겨찾기 영역에서 기기 호출 후, observe 메소드가 활성화되면서 발생하는 notifyDataSetChanged()의 실행 과정 및 이후 setInitCallback() 호출 메커니즘에 대해 분석한 내용을 정리 해 두고자 한다.

 

notifyDataSetChanged() 실행의 의미

  • notifyDataSetChanged()를 호출하면, 이는 RecyclerView에 데이터셋이 변경되었음을 알리고 UI를 갱신하라는 신호를 보내는 역할을 한다.
  • 데이터셋의 변경 사항을 RecyclerView가 감지하고, 이에 따라 UI를 업데이트하는 과정이 시작된다.

setInitCallback() 호출 과정

  • ControlAdapter 내부 코드 분석 결과, onBindViewHolder 메소드에서 아이템에 대한 bind 메소드를 호출하는 과정에서 setInitCallback()이 조건에 따라 실행된다.
  • initCallback이 null이 아닐 경우, 해당 콜백을 통해 아이템 뷰와 데이터의 초기화나 추가 설정을 수행할 수 있다.

notifyDataSetChanged() 이후 호출되는 주요 메소드 순서

  1. notifyDataSetChanged() 호출
    데이터셋 변경을 알리고, 리사이클러뷰에 UI 갱신을 요청한다.
  2. getItemCount() 호출
    변경된 데이터셋의 아이템 개수를 확인한다.
  3. onCreateViewHolder() 호출 (필요 )|
    새로운 아이템 뷰가 필요한 경우, 새로운 뷰 홀더를 생성한다
  4. onBindViewHolder() 호출
    아이템 뷰에 데이터를 바인딩합니다. notifyDataSetChanged()로 인해 모든 보이는 아이템 뷰들이 재바인딩될 수 있다.
  5. onViewAttachedToWindow()  onViewDetachedFromWindow() 호출 (화면에 추가/제거 )
    아이템 뷰가 리사이클러뷰에 추가되거나 제거될 때 호출된다.
  6. 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