안드로이드 recyclerView에서 setHasFixedSize 역할

반응형
728x170

recyclerView를 사용한 앱들을 보면 setHasFixedSize를 사용하는 것을 볼 수 있다

 

이거의 역할은 무엇일까?


1. setHasFixSize의 역할

 

아래의 코드는 안드로이드 스튜디오 자바에 내장되어있는 recyclerView에 대한 함수 중 일부이다

void onItemsInsertedOrRemoved() {
   if (hasFixedSize) layoutChildren();
   else requestLayout();
}

내용을 간단하게 해석하면 hasFixedSize가 true 일 때는 지정한 item의 layout 정보를 가져오고

 

falsel일 때는 부모 layout의 layout 정보를 받아오게 한다

 

이게 무슨 뜻일까?

 

RecyclerView의 동작

 

RecyclerView는 내부 레이아웃이 변경될 때 마다 기본적으로 부모 레이아웃의 정보를 가져오고 

 

그것을 토대로 item의 레이아웃을 조절합니다.

 

hasFixedSize를 true로 하면 이 과정을 생략해서 더욱 빠르게 recyclerView를 갱신할 수 있고

 

생략한 만큼 리소스를 적게 잡아먹게 됩니다.

 


2. 그래서 setHasFixedSize 써도 되는거임?

300x250

일반적인 경우에는 쓰는 것이 좋습니다.

 

그 이유는 일반적인 recyclerView에선 레이아웃이 변경될 이유가 없기 때문입니다.

 


참조 사이트

https://woovictory.github.io/2020/06/24/Android-RecyclerView-Attr/

 

https://stackoverflow.com/questions/28709220/understanding-recyclerview-sethasfixedsize

 

Understanding RecyclerView setHasFixedSize

I'm having some trouble understanding setHasFixedSize(). I know that it is used for optimization when the size of RecyclerView doesn't change, from the docs. What does that mean though? In most co...

stackoverflow.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형

댓글()