[ํฐ๋] ํฐ๋ ์๋น์ค์ ์ ์ฉ๋ Android View Binding ์ด์ผ๊ธฐ
์๋
ํ์ธ์ ํฐํ์ ์๋๋ก์ด๋ ๊ฐ๋ฐ์ ๊น์ ์ ์
๋๋ค :D
์ค๋์ ํฐํ ์ฌ์์๋ถํฐ ํฐํ ์๋น์ค์ ์ฌ์ฉ๋ Android View Binding ๊ธฐ์ ์ ๋ํด ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
๐ฉ๐ปView Binding์ด๋?
View Binding์ด๋ Kotlin ์ฝ๋ ์์ฑ ์ ์๋๋ก์ด๋ ๋ทฐ์์ ์ํธ์์ฉ์ ์ฝ๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์
๋๋ค.
View Binding์ ํ์ฉํ๋ฉด ๊ฐ ๋ ์ด์์ ๋ง๋ค ๋ฐ์ธ๋ฉ ํด๋์ค๊ฐ ์๋์ผ๋ก ์์ฑ๋๊ณ ,
๋ ์ด์์ ID๊ฐ ์๋ ๋ทฐ์์ ์ด๋ฅผ ์ง์ ์ฐธ์กฐํ์ฌ findViewById๋ฅผ ๋์ฒดํ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๋ฉฐ ํน์ง์ ์๋์ ๊ฐ์ต๋๋ค.
- Null Safe : ๋ทฐ ๋ฐ์ธ๋ฉ์ ๋ทฐ์ ์ง์ ์ฐธ์กฐ๋ฅผ ์์ฑํ๋ฏ๋ก ์ ํจํ์ง ์์ ๋ทฐ ID๋ก ์ธํด null ํฌ์ธํฐ ์์ธ(NPE)๊ฐ ๋ฐ์ํ ์ํ์ด ์๋ค.
- Type safety : ๊ฐ ๋ฐ์ธ๋ฉ ํด๋์ค์ ์๋ ํ๋์ ์ ํ์ด XML ํ์ผ์์ ์ฐธ์กฐํ๋ ๋ทฐ์ ์ผ์นํ๋ค. ์ฆ ํ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
- ๋น ๋ฅธ ์ปดํ์ผ ์๋ : ๋ฐ๋ก xml ํ์ผ์ ํ๊ทธ๊ฐ ํ์ํ์ง ์๊ณ ์๋์ผ๋ก ์ ์ฉ๋๋ฏ๋ก ์ฌ์ฉ ํธ์์ฑ์ ๊ฐ์ง๋ค.
๐ฉ๐ป์ ์ฌ์ฉํ ๊น?
์์ View Binding์ด findViewById๋ฅผ ๋์ฒดํ ์ ์๋ค๊ณ ๋ง์๋๋ ธ์ต๋๋ค.
findViewById๋ฅผ ์ฌ์ฉํ ๋ ์ด๋ค ๋ถํธํจ์ด ์๋์ง ์์๋ฅผ ํตํด ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํ๋ฉด์์ ๋ค์๊ณผ ๊ฐ์ ๋ฒํผ์ ๋ฐฐ์นํ์ ๋ Kotlin ํ์ผ์์ ์ด์ ์ ๊ทผํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
findViewById๋ฅผ ์ฌ์ฉํด ๋ฒํผ์ ์ ์ํ๊ณ ํด๋น ๋ฒํผ์ด ํด๋ฆญ๋์์ ๋์ ์ด๋ฒคํธ๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
๋ฒํผ์ด 1๊ฐ์ผ ๊ฒฝ์ฐ ํฐ ๋ถํธํจ์ ๋๋ผ์ง ์์ ์์ง๋ง
์๋์ ๊ฐ์ด ๋ฒํผ์ด 3๊ฐ๋ก ์ฆ๊ฐํ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ๋ชจ๋ findViewById๋ก์ ์ํด์ผ ํ๋ ๋ถํธํจ์ด ๋ฐ์ํฉ๋๋ค.
์ค์ ์๋น์ค๋ฅผ ์ ์ํ๋ฉด ํ๋์ View ์์ ์ฌ๋ฌ๊ฐ์ ์์๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ ์ ์ํ๋ ๊ฒ์ ๋งค์ฐ ๋นํจ์จ์ ์ธ๋ฐ์
View Binding์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๊ณผ์ ์ ์๋ตํ ์ ์๊ฒ ๋๋ ๊ฒ์ด์ฃ :)
๐ฉ๐ป์ด๋ป๊ฒ ์ฌ์ฉํ ๊น?
์์ ์์ฑํ ์ฝ๋๋ฅผ View Binding์ ์ฌ์ฉํด ๋ค์ ์์ฑํ๋ ๊ณผ์ ์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
1. build.gradle์ View Binding๋ฅผ ์ถ๊ฐํฉ๋๋ค.
2. Activity ์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์์๋ฅผ ๋ฐฐ์นํฉ๋๋ค.
3. ์์ฑ๋ Binding ํด๋์ค์ ํฌํจ๋ inflate() ๋ฉ์๋๋ฅผ ํธ์ถํด Binding ์ธ์คํด์ค๋ฅผ ์์ฑํ ํ, ๋ฃจํธ ๋ทฐ๋ฅผ setContentView()์ ์ ๋ฌํ์ฌ ํ๋ฉด์์ ํ์ฑ ๋ทฐ๋ก ๋ง๋ญ๋๋ค.
4. ์ด์ ๋ชจ๋ ์ค๋น๊ฐ ๋๋ฌ์ผ๋ Binding์ ์ฌ์ฉํ์ฌ ๊ฐ ๊ฐ์ฒด๋ฅผ findViewById๋ฅผ ์ฌ์ฉํ ์ ์ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
5. ์ ๋ฎฌ๋ ์ดํฐ๋ฅผ ์คํํด๋ณด๋ฉด ๋ก์ง์ด ์ ๋์ํ๋ ๊ฒ์ ํ์ธํ์ค ์ ์๋ต๋๋ค :D !
๐ฉ๐ป๋ง์น๋ฉฐ
์ค๋ ์๊ฐ ํ๋ก์ ํธ๋ฅผ ์ด์ด์ค๋ค ๋ณด๋ ํฐ๋์ ์์ค ์ฝ๋์๋ ๋ค์ํ ๋ณํ๊ฐ ์์๋๋ฐ์.
๊ฐ๋จํ์ง๋ง ์ ์ฉ ํ ๊ฐ์ฅ ๋ง์ด ํ์ฉ๋๊ณ ์๋ Binding์ ๋ํด ์๊ฐํ ์ ์์ด ์ฆ๊ฑฐ์ด ์๊ฐ์ด์์ต๋๋ค.
๋ค์์ ๊ฐ์ฅ ์ค๋ ์๊ฐ ๊ณ ๋ฏผํ๋ ์ค๋ฅ ํด๊ฒฐ ๊ณผ์ ์ ์๊ฐํ๋ ํฌ์คํธ์ ํจ๊ป ๋์์ค๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค :) !
๐ฉ Contact : yuu-jeong@naver.com
๐ฒ SNS : https://instagram.com/yu.eek
'๐ฉโ๐ป TECH' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TECH] GitHub Actions๋ก CI/CD ๊ตฌ์ถํ๊ธฐ(1) (0) | 2023.08.15 |
---|---|
[TECH] Android Studio๋ก ๋ค์ํ ๊ธฐ๊ธฐ ํ๋ฉด์ ๋์ํ๊ธฐ (0) | 2023.08.07 |
[TECH] RecyclerView ViewModel ์ ์๊ธฐ (0) | 2023.08.02 |
[TECH] Cloudwatch Logs๋ก ๋ก๊ทธ ํ์ผ ์์งํ๊ธฐ (1) | 2023.07.26 |
[TECH] Android Kotlin์ผ๋ก ๊ฐ๋จํ ๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ (4) | 2023.07.20 |