ListAdapter 깜빡임 현상

quinones·2025년 4월 9일

리스트 어뎁터와 DiffUtil을 사용할 때 한가지 문제점이 있다.

만약 어뎁터에서 뷰타입이 한가지가 아니고, 여러개의 뷰타입을 사용중이라면, 그리고 어뎁터에 새롭게 추가되는 아이템이 기존에 사용하던 뷰타입과 다른 뷰타입의 아이템이 들어가게 된다면!

Diff가 아이템의 변화를 감지하는게 아니고, 아예 새로운 데이터가 들어왔다고 판단해서 새롭게 세팅해준다.

이때 사용자 입장에서는 기존 아이템이 삭제되고, 새로운 아이템이 추가되면서 흰색 화면이 잠시 보이며 깜빡이는 것 같은 현상이 발생한다.

이를 해결하기 위해서 애니메이션을 제거해주는 작업을 진행했다.

(binding.homeRecycler.itemAnimator as? SimpleItemAnimator)?.supportsChangeAnimations = false
binding.homeRecycler.itemAnimator = null

기존에는 itemAnimator만 null로 시켜줬는데, SimpleItemAnimator의 supportsChangeAnimations를 false로 바꿔주니 모든 애니메이션이 제거되고, 새로운 뷰타입의 아이템이 들어오더라도 깜빡임 없이 수정된다!

profile
이우진

0개의 댓글