hegunhee / NewSimpleMemoApp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Adapter DiffUtil 사용

hegunhee opened this issue · comments

배경

  • RecyclerView 사용에 있어서 데이터가 변경되거나 수정될때 notifyDataSetChanged()를 사용
  • notifyDataSetChanged()는 편하지만 성능에 치명적인 악영향을 미침
  • 이전 데이터 상태와 현재 데이터간의 상태차이를 계산하고
  • 최소한의 데이터만 갱신해주는 DiffUtil을 사용함

내용

  • DiffUtil.Callback 추상 클래스를 상속받아 Diff클래스를 만들어줌
  • 4개의 추상 메소드를 오버라이딩 해서 사용함

image
아이템 비교를 할때
areItemsTheSame 메소드에서 true 값이 나올경우 areContentsTheSame 메소드가 호출됨
여기서는 id가 primary key이기때문에 사용했습니다.
areContentsTheSame함수의 호출 횟수를 줄이기위해 사용

image
dispatchUpdatesTo는 diffResult를 가지고 데이터를 변경해줌