RecyclerView를 사용하다 보면 습관적으로 setHasFixedSize(true)속성을 사용하곤 한다.
정확한 의미는 모른 채 대략 "사이즈를 고정한다..?" 이런 목적으로 사용했던 것 같다. 이번에 setHasFixedSize의 의미에 대해 정확히 알아 두려 한다.
setHasFixedSize
RecyclerView는 Item의 size에 따라서 RecyclerView의 크기나 너비, 높이가 변경되는 View이다. 즉, Item이 추가, 삭제, 수정될 때마다 RecyclerView의 전체적인 크기가 변경된다는 것이다.
이때, 변경된 Item 목록을 RecyclerView에 반영하기 위해 레이아웃을 다시 그릴 필요가 있는데 RecyclerView를 다시 그리는 작업은 높은 비용을 요구하고, 성능 저하를 일으킬 우려가 있다.
우리는 위와 같은 동작을 최소화하고자 setHaseFixedSize 속성을 사용한다.
RecyclerView의 크기가 변경되지 않고 고정된 경우 setHaseFixedSize 속성을 true로 설정한다.
setHasFixedSize(true)는 RecyclerView의 크기(size)가 고정되어 있음을 명시하는 역할을 한다.
리사이클러뷰의 데이터를 갱신하는 과정에서 잠시 화면이 깜빡이는 경우에 sethasFixedSize 속성을 true로 명시해주면 깜빡이는 현상을 없앨 수 있다.
이 경우 RecyclerView의 크기가 고정되어 있기 때문에 RecyclerView 전체를 다시 그릴 필요없이 Item 항목만을 적절히 수정해 불필요한 리소스를 줄일 수 있다 :D