์๋ ํ์ธ์.
RecyclerView์ ๋ํด ์์ธํ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ ๋ฆฌํ๋ค ๋ณด๋ ๊ธ์ด ๊ธธ์ด์ง ๊ฒ ๊ฐ์ ์๋ฆฌ์ฆ๋ก ๋๋ ์ ๊ธ์ ์์ฑํ๋ ค๊ณ ํด์.
ํ์ฌ ๊ณํ์ผ๋ก๋ ์ฝ 4ํธ์ ์๋ฆฌ์ฆ๋ก ์์ฑํ๋ ค๊ณ ํ์ง๋ง ์ค๊ฐ์ ์๋ต๋๊ฑฐ๋ ๋์ด๋ ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- RecyclerView์ ๋ํ์ฌ (feat. ListView)
- RecyclerView ๊ตฌ์ฑ์์
- RecyclerView Deep Dive (feat. RecyclerView.java)
- RecyclerView CustomView
์ผ์ฃผ์ผ์ ํ๋์ฉ์ ์ฐ๊ฒ ์ง...๋ผ๋ ๋ง์๊ฐ์ง์ผ๋ก ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
RecyclerView
RecyclerView | Android Developers
androidx.appsearch.builtintypes.properties
developer.android.com
์ ๋ฐ๋ฅด๋ฉด, RecyclerView์ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
A flexible view for providing a limited window into a large data set.
๋์ฉ๋ ๋ฐ์ดํฐ์ ์ ์ ํ๋ ์ฐฝ์ ์ ๊ณตํ๊ธฐ ์ํ ์ ์ฐํ ๋ทฐ
์๋๋ก์ด๋์์ ๋ฆฌ์คํธ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์์ฃผ ์ฌ์ฉํ๊ฒ ๋๋ ์์ ฏ์ ๋๋ค.
Android Jetpack์ ๊ตฌ์ฑ์์ ์ค ํ๋์ด๊ธฐ๋ ํ๋ฉฐ, RecyclerView๋ผ๋ ํด๋์ค๋ ์กด์ฌํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์กด์ฌํฉ๋๋ค.
๋๋ช ์ด์ธ๊ฐ์ ๋๋์ด๋ค์.
์ฐธ๊ณ ๋ก ์๋๋ก์ด๋ ๊ฐ๋ฐ์ ๊ณต์ ์ฌ์ดํธ์์๋ ๋ฆฌ์คํธ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ผ ๋ RecyclerView๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๊ทน ๊ถ์ฅํ๊ณ ์์ต๋๋ค.
ํน์ง
๊ฐ์ฅ ํฐ ํน์ง์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ทฐ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ , ์ฌํ์ฉํ๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ฐฏ์๋งํผ์ ๋ทฐ๋ฅผ ์์ฑํ์ง ์๊ณ , ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋งํผ๋ง ์์ฑํด์ ์ฌํ์ฉํ๊ฒ ๋ฉ๋๋ค.
๋ทฐ๋ฅผ ์ฌํ์ฉํ๋ฉด ์ด๋ค ์ฅ์ ์ด ์์๊น์?
- ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
- ์๋ ํฅ์
- ๋ถ๋๋ฌ์ด ์คํฌ๋กค
์๋ ๋ทฐ๋ฅผ ๋ค์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ์ด์์์ ๋ฐ์ดํฐ ๊ฐฏ์๋งํผ ์์ฑํ์ง ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๊ฐ์ํ๊ณ , ๋ฉ๋ฌ์ ์๋๋ ์ฌ๋ผ๊ฐ๊ณ , ์คํฌ๋กค ๋ชจ์ ๋ ๋ถ๋๋ฌ์์ง๋ ๊ฒ์ ๋๋ค.
๋ทฐ ์์ฑ์ ์ผ๋ง๋ ๋ง์ ์ฝ์คํธ๊ฐ ํ์ํ๊ธธ๋?
๊ทธ๋ผ ๋ทฐ๋ฅผ ์์ฑํ๋ ๋ฐ ์ผ๋ง๋ ๋ง์ ์ฝ์คํธ๊ฐ ํ์ํ๊ธธ๋ ListView๋ฅผ ์ฐ์ง ๋ง๋ผ๊ณ ์ ์ ๋น๋ถํ๋ ๊ฑธ๊น์?
๋น์ฐํ ์๋ ๋ทฐ๋ฅผ ๋ค์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์๋ก ๋ง๋๋ ๋ฐ์ ์ฝ์คํธ๊ฐ ๋ง์ด ๋ค์ด๊ฐ ๊ฒ ๊ฐ์ ๋๋์ด ๋ค๊ธด ํฉ๋๋ค.
๋ทฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ญ์ ํ๋ ๋ฐ์๋ ๋ง์ ์ฝ์คํธ๊ฐ ํ์ํ์ง๋ง, ๊ฒฐ์ ์ ์ผ๋ก๋ Layout Inflate ๊ณผ์ ์์์ ์ฝ์คํธ๊ฐ ๋ฌด์๋ฌด์ํฉ๋๋ค.
์๋์๋ก ์คํฌ๋กคํ ๋๋ง๋ค ์๋กญ๊ฒ ๋ณด์ฌ์ค ๋ทฐ๋ฅผ ์์ฑํ๊ณ , ๊ทธ ๋ทฐ๋ฅผ inflateํ๋ ๋ฐ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์คํ ์๊ฐ๋ ๋ฌธ์ ์ธ๋ฐ, ์ฌ์ง์ด layout inflate๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ์ ๋ฉ๋๋ค. UI ์ค๋ ๋์์ ์คํ๋๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ค์ ๋ก ListView๋ก ๋ฐ์ดํฐ ๋ชฉ๋ก์ ๋ง๋ค๊ณ ์คํํด์ ์ซ์ซ ์คํฌ๋กคํด ๋ณด๋ฉด ๋ฒ๋ฒ ...๋ฒ๋ฒ๋ฒ ...ํ๋ ๋๋์ด ๋ญ๋๋ค.
์ฐ์ง ๋ง๋ผ๋ ๋ฐ๋ ์ด์ ๊ฐ ์๋ ๋ฒ์ ๋๋ค.
ListView๋ ์ฌํ์ฉ์ด ์๋๋์
RecyclerView๋ฅผ ๊ณต๋ถํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ListView์ ๋น๊ตํด์ RecyclerView๊ฐ ์ฑ๋ฅ์ด ๋ ์ข์ผ๋ RecyclerView๋ฅผ ์จ์ผ ํ๋ค...๋ ์์ง์ ๊ธ์ ๋ง์ด ๋ดค์ ๊ฒ ๊ฐ์๋ฐ์.
๊ทธ๋ผ ListView์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ์ด๋จ๊น์? ์ ๋ง ๊ทธ๋ ๊ฒ ์ ๋ง์ ์ผ๊น์?
์ฌ์ค ListView์๋ ViewHolder ํจํด์ ์ ์ฉํ์ฌ RecyclerView์ ๋น์ทํ๊ฒ ๋์์ํฌ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ListView๋ ViewHolder ํจํด์ "๊ฐ์"ํ์ง ์๊ณ , ํก์คํฌ๋กค๋ ์๋๊ณ , ์ ๋๋ฉ์ด์ ๋ ์๋๊ณ , ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค notifyDataSetChanged()๋ฅผ ํตํด ๋ชจ๋ ๋ทฐ๋ฅผ ๊ฐฑ์ ํด์ผ ํฉ๋๋ค.
์๋นํ ๋ฒ๊ฑฐ๋กญ์ฃ ?
์ง์ง ์ฐ์ง ๋ง๋ผ๋ ๋ฐ๋ ์ด์ ๊ฐ ์๋ ๋ฒ์ ๋๋ค...
๋ง๋ฌด๋ฆฌ
๋ค์ ๊ธ์์๋ RecyclerView์ ๊ตฌ์ฑ์์์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
'๐ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
RecyclerView ๊ตฌ์ฑ์์ (0) | 2023.11.24 |
---|