Skip to content

Latest commit

ย 

History

History
61 lines (22 loc) ยท 2.87 KB

RecyclerView's setHasFixedSize.md

File metadata and controls

61 lines (22 loc) ยท 2.87 KB

์„œ๋ก 

RecyclerView๋Š” ์•ฑ์—์„œ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์ธ ์กด์žฌ๋ผ๊ณ  ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๊ฐ€ ๋ฆฌ์ŠคํŠธ ํ˜•์‹์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ ‡๋“ฏ ๋ฆฌ์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด RecyclerView์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” setHasFixedSize๋ฅผ true๋กœ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒŒ ๋ฌด์—‡์„ ์˜๋ฏธํ• ๊นŒ??

๋ณธ๋ก 

ํ•„์ž๋Š” setHasFixedSize = true์˜ ๋ฌธ์žฅ์„ ๋ณ„ ์˜๋ฏธ ์—†์ด ํƒ€์ดํ•‘ํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์ข‹์ง€ ์•Š์€ ์Šต๊ด€์ด๋‹ค. ํ•„์ž๋„ ์ด ์ฝ”๋“œ๋งŒ ์ด๋ ‡๊ฒŒ ํ–ˆ์„ ๋ฟ, ๋‹ค๋ฅธ ์ฝ”๋“œ๋Š” ๋‹ค ์ƒ๊ฐํ•˜๊ณ  ์ž‘์„ฑํ•œ๋‹ค. ์•„๋ฌดํŠผ, ์ € ํ•จ์ˆ˜๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

[setHasFixedSize]

  • StackOverflow์˜ ๋‹ต๋ณ€์„ ํ•ด์„ํ–ˆ๋‹ค.

  • ์•„๋ž˜์˜ ํ•จ์ˆ˜๋ฅผ ๋ณด์ž

void onItemsInsertedOrRemoved() {

   if (hasFixedSize) layoutChildren();

   else requestLayout();

}
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„์ดํ…œ์„ ์‚ฝ์ž…, ์ด๋™ ํ˜น์€ ์ œ๊ฑฐํ•  ๋•Œ๋งˆ๋‹ค RecyclerView์˜ ํฌ๊ธฐ ๋ฐ ๋„ˆ๋น„๋‚˜ ๋†’์ด๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋‹ค๋ฅธ ๋ทฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ ํ•ญ๋ชฉ์„ ์ž์ฃผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ, ํŠนํžˆ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ์–ด๋Œ‘ํ„ฐ์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•ด๋„ ๋†’์ด๋‚˜ ๋„ˆ๋น„๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, setHasFixedSize๋ฅผ true๋กœ ์„ค์ •ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ ˆ์ด์•„์›ƒ ํŒจ์Šค๋ฅผ ํ”ผํ•˜๋ผ.

๊ฒฐ๊ตญ, ์•„์ดํ…œ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค RecyclerView์˜ ํฌ๊ธฐ๋Š” ๋ณ€๊ฒฝ๋œ๋‹ค. ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ด์•„์›ƒ์„ ๊ทธ๋ฆด ๋•Œ, ํฌ๊ธฐ๋ฅผ ์ธก์ •ํ•˜๊ณ  ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ด๋‹ค. setHasFixedSize์˜ ๊ธฐ๋Šฅ์€ RecyclerView์˜ ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ์ผ์ •ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์œผ๋กœ ํ™•์ธํ•œ๋‹ค. ํ•ญ๋ชฉ์˜ ๋†’์ด๋‚˜ ๋„ˆ๋น„๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ถ”๊ฐ€ ๋˜๋Š” ์ œ๊ฑฐ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์€ ๋™์ผํ•˜๋‹ค. setHasFixedSize๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์„ ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๊ฒฐ๋ก 

๋Œ€๋ถ€๋ถ„ RecyclerView๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ ์€ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์•„์ดํ…œ ํ•ญ๋ชฉ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋‹ค. ๋”ฐ๋ผ์„œ ์•„์ดํ…œ์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์„ ๊ฒƒ์ด๊ณ , ๊ทธ๋ ‡๋‹ค๋ฉด setHasFixedSize๋ฅผ true๋กœ ์„ค์ •ํ•จ์œผ๋กœ์จ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. ๋”ฐ๋ผ์„œ ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์„ ํ”ผํ•˜๋„๋ก ํ•˜์—ฌ ์„ฑ๋Šฅ ํ•˜๋ฝ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

Reference