반응형
리사이클러뷰에 새로운 아이템이 삽입되거나, 기존의 아이템이 제거될 때 호출되는 메소드를 매우 함축하여 간결히 표현한 코드이다.
void onItemsInsertedOrRemoved() {
if (hasFixedSize) layoutChildren();
else requestLayout();
}
코드를 보면 hasFixedSize 가 true 인 경우 layoutChildren() 을 호출하고, 만약 false 라면 requestLayout() 을 호출하게 된다.
- requestLayout()
View 의 색깔 및 모양이 아닌 크기가 변화할 때 requestLayout() 을 호출하여 다시 ViewGroup 에 속한 뷰들의 크기 측정부터, 자신의 크기 측정까지 일일히 수행한다고 했다.
결론
우리는 setHasFixed(true) 를 해줌으로써 대부분의 경우에 High-cost 작업을 피할 수 있다.
리사이클러뷰의 크기가 동적으로 변화하는 경우 (height 혹은 width 를 wrap_content 로 지정한 경우) 가 있을 경우 false 로 지정해야 한다.
만일 동적인 리사이클러뷰에 setHasFixed(false) 를 지정하지 않는다면 제대로 동작하지 않을 것이다.
출처 :
https://velog.io/@haero_kim/Android-setHasFixedSizetrue-%EC%9D%98-%EC%A0%95%EC%B2%B4
반응형
'안드로이드' 카테고리의 다른 글
TextView 2개 붙어있을 때 앞에 ...붙이기 (0) | 2022.05.31 |
---|---|
[Android] 페이징3(Paging3)에 대해 알아보자 (0) | 2022.05.13 |
안드로이드 APK 아무나 삭제 못하도록 하는 adb 명령어 (0) | 2022.03.28 |
Android Adb(Android Debug Bridge) Path 설정(MAC) (0) | 2022.03.28 |
Android WebView (React 서비스 화면과 통신) (0) | 2022.03.21 |