Adapter는 데이터를 받아서 레이아웃에 직접 연결해주는 클래스이다.
ListAdapter는 DiffUtil을 이용하여 리스트를 업데이트하는 어댑터이다.
getCurrentList()
: 현재 리스트를 반환한다.onCurrentListChanged()
: 리스트가 업데이트 되었을 때 실행할 콜백을 지정할 수 있다.submitList(List)
: 리스트 데이터를 교체할 때 사용한다.리사이클러뷰 어댑터가 제공하는 노티파이아이템 메소드
notifySetChanged
: 리사이클러뷰 전체 업데이트(리스트 크기와 아이템 모두 변경 시)notifyItemChanged
: 특정 아이템만 변경 시notifyItemRangeChanged
: 연속된 아이템들 변경 시notifyItemInserted
: 특정 아이템 삽입 시notifyItemRangeInserted
: 연속된 아이템들 삽입 시notifyItemRemoved
: 특정 아이템 삭제 시notifyItemRangeRemoved
: 연속된 아이템들 삭제 시notifyItemMoved
: 특정 아이템 위치 이동 시변한 부분의 차이를 계산해서 갱신결과를 반환해주는 클래스이다.
(바뀐 부분을 별로 없다면 전체를 업데이트하는 것은 비효율적이기때문)
getOldListSize()
: 현 리스트 sizegetNewListSize()
: 갱신 리스트 sizeareItemsTheSame(int oldItemPosition, int newItemPosition)
: 두 아이템의 id가 같은지areContentsTheSame(int oldItemPosition, int newItemPosition)
: 두 아이템을 equals 비교getChangePayload(int oldItemPosition, int newItemPosition)
: areItemTheSame()
이 true, areContentsTheSame()
이 false일 때 변경 내용의 페이로드 가져옴DiffUtil에 대해 자체적으로 스레드 처리를 해주는 클래스이다.
AsyncListDiffer를 더 쓰기 편하게 랩핑한 클래스이다.
submitList()
함수로 전체를 전달하면 어댑터가 Background Thread를 사용해 참고
https://www.inflearn.com/course/%EC%95%8C%EA%B8%B0%EC%89%AC%EC%9A%B4-modern-android/unit/112153 ,
https://velog.io/@24hyunji/AndroidKotlin-RecyclerView%EC%97%90%EC%84%9C-ListAdapter-DiffUtil-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0