본문 바로가기
프로그래밍/App 개발

[Android] ConcatAdapter onBindViewHolder 여러번 호출되는 현상

by 엽기토기 2024. 1. 5.
반응형

 

https://medium.com/androiddevelopers/merge-adapters-sequentially-with-mergeadapter-294d2942127a

 

Concatenate adapters sequentially with ConcatAdapter

Use case example: displaying a list header and footer

medium.com

 

CheckList 에서 체크했더니 체크가 풀렸다가 다시 체크가 되면서 반짝이는(?) 버그가 발견되었다.

로그를 찍어보니 CheckList adapter 에서 onBindViewHolder 가 2번 호출되고 있었다.

 

ConcatAdapter 안에 있는 특정 어댑터에서

notifyItemChanged(~)
notifyDataSetChanged()

등 호출하면 다른 adapter 에도 영향이 간다.

 

예를들어

0 - progress adapter

1 - checklist adapter

이렇게 있는데

0번 adapter 에서 notifyDataSetChanged() 를 호출하면 1번 adapter 도 변경을 해버린다.

0번만 변경하고 싶으면 notifyItemChanged(0) 를 호출하면 된다.

ConcatAdapter 라 notify 범위가 각각 적용될 줄 알았는데 내부적으로는 ViewType 나눠놓은거라 그런듯 하다.

 

반응형