[ANDROID] 데이터 바인딩 라이브러리

Data Binding?


μ½”λ“œμ—μ„œ μž‘μ„±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 선언적 ν˜•μ‹μœΌλ‘œ λ ˆμ΄μ•„μ›ƒμ˜ UI κ΅¬μ„±μš”μ†Œλ₯Ό μ•±μ˜ 데이터 μ†ŒμŠ€μ™€ κ²°ν•©ν•  수 μžˆλŠ” 지원 λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. 보톡 μ½”λ“œμ—μ„œ λ‹€μŒκ³Ό 같이 findViewById()λ₯Ό ν˜ΈμΆœν•˜μ—¬ μœ„μ ―μ„ μ°Ύκ³ , 데이터 μ†ŒμŠ€λ₯Ό μœ„μ ―μ˜ 속성에 κ²°ν•©μ‹œν‚€λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•©λ‹ˆλ‹€.  

 

λ§Œμ•½ 데이터 바인딩 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄ 이런 λ°©μ‹μœΌλ‘œ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ ˆμ΄μ•„μ›ƒ νŒŒμΌμ—μ„œ κ΅¬μ„±μš”μ†Œλ₯Ό λ°μ΄ν„°μ†ŒμŠ€μ™€ κ²°ν•©ν•˜λ©΄ μ•‘ν‹°λΉ„ν‹°μ—μ„œ λ§Žμ€ UI ν”„λ ˆμž„μ›Œν¬ ν˜ΈμΆœμ„ μ‚­μ œν•  수 μžˆμ–΄ λ”μš± λ‹¨μˆœν™”λ˜κ³  μ˜μ‘΄μ„±μ΄ λ–¨μ–΄μ Έ μœ μ§€κ΄€λ¦¬ λ˜ν•œ μ‰¬μ›Œμ§‘λ‹ˆλ‹€. 그리고 μ•± μ„±λŠ₯이 ν–₯μƒλ˜λ©° λ©”λͺ¨λ¦¬ λˆ„μˆ˜ 및 null 포인터 μ˜ˆμ™Έλ₯Ό 방지할 수 μžˆμŠ΅λ‹ˆλ‹€.  

 

데이터 κ²°ν•© 라이브러리 μ‚¬μš© 


데이터 κ²°ν•© 라이브러리λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” app μˆ˜μ€€μ˜ gradle에 μ•„λž˜ μ˜ˆμ‹œ 처럼 μž‘μ„±μ„ ν•΄μ•Όν•©λ‹ˆλ‹€.

데이터 κ²°ν•© λΌμ΄λΈŒλŸ¬λ¦¬λŠ” λ ˆμ΄μ•„μ›ƒμ˜ λ·°λ₯Ό 데이터 μ†ŒμŠ€μ™€ κ²°ν•©ν•˜λŠ” 데 ν•„μš”ν•œ 클래슀λ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€. 

ActivityMainBindingκ³Ό 같이 μžμ‹ μ΄ μ„ μ–Έν•œ μ•‘ν‹°λΉ„ν‹°μ˜ 이름에 따라 ν΄λž˜μŠ€κ°€ μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€. ν•΄λ‹Ή 클래슀λ₯Ό μ΄μš©ν•˜λ©΄ 앑티비티와 xml 파일 κ°„μ˜ 바인딩이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 

λΌμ΄λΈŒλŸ¬λ¦¬λŠ” κΈ°μ‘΄ λ ˆμ΄μ•„μ›ƒκ³Ό μ›ν™œν•˜κ²Œ 곡쑴할 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ν‘œν˜„μ‹μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 결합을 μœ„ν•œ λ³€μˆ˜λŠ” UI λ ˆμ΄μ•„μ›ƒ 루트 μš”μ†Œμ™€ λ™μΌν•œ μœ„μΉ˜μ˜ μš”μ†ŒμΈ data μš”μ†Œμ—μ„œ μ •μ˜λ©λ‹ˆλ‹€. 

xml μš”μ†Œμ˜ 결합을 μœ„ν•œ λ³€μˆ˜λ₯Ό 바인딩 ν•΄μ€€ ν›„, λ‹€μŒκ³Ό 같이 UI κ΅¬μ„±μš”μ†Œμ™€ λ°μ΄ν„°μ†ŒμŠ€λ₯Ό κ²°ν•©μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹¨μˆœνžˆ λ°μ΄ν„°μ†ŒμŠ€ 뿐만 μ•„λ‹ˆλΌ, 이벀트 κ΄€λ ¨ λ©”μ„œλ“œλ„ 선언적 ν˜•μ‹μœΌλ‘œ κ²°ν•©μ‹œμΌœμ€„ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

Reference


https://medium.com/@jsuch2362/android-%EC%97%90%EC%84%9C-mvvm-%EC%9C%BC%EB%A1%9C-%EA%B8%B4-%EC%97%AC%EC%A0%95%EC%9D%84-82494151f312

 

Android μ—μ„œ MVVM 으둜 κΈ΄ 여정을…

μ•ˆλ“œλ‘œμ΄λ“œ μ•± 아킀텍쳐 νŒ¨ν„΄μ΄ 자리 μž‘μ€ 것은 μ–Όλ§ˆ λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 뢈과 5λ…„μ „λΆ€ν„°μ„œμ•Ό μ–΄λ–»κ²Œ ν•˜λ©΄ 쒋은 κ°œλ°œμΈμ§€κ°€ κ΅¬μ²΄ν™”λ˜μ—ˆκ³  ν•œκ΅­μ—λ„ 4λ…„ μ „μ―€μ—μ„œμ•Ό MVP 의 κ΅¬ν˜„μ²΄ μƒ˜ν”Œ μ½”λ“œλ“€μ΄ λ‚˜μ˜€κΈ° μ‹œμž‘ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

medium.com

https://developer.android.com/topic/libraries/data-binding

 

데이터 κ²°ν•© 라이브러리  |  Android 개발자  |  Android Developers

데이터 κ²°ν•© 라이브러리   Android Jetpack의 κ΅¬μ„±μš”μ†Œ 데이터 κ²°ν•© λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ν”„λ‘œκ·Έλž˜λ§€ν‹± 방식이 μ•„λ‹ˆλΌ 선언적 ν˜•μ‹μœΌλ‘œ λ ˆμ΄μ•„μ›ƒμ˜ UI κ΅¬μ„±μš”μ†Œλ₯Ό μ•±μ˜ 데이터 μ†ŒμŠ€μ™€ κ²°ν•©ν•  수 μžˆλŠ” 지원 λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. λ ˆμ΄μ•„μ›ƒμ€ ν”νžˆ UI ν”„λ ˆμž„μ›Œν¬ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” μ½”λ“œκ°€ ν¬ν•¨λœ ν™œλ™μ—μ„œ μ •μ˜λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ•„λž˜ μ½”λ“œλŠ” findViewById()λ₯Ό ν˜ΈμΆœν•˜μ—¬ TextView μœ„μ ―μ„ μ°Ύμ•„ viewModel λ³€μˆ˜μ˜ userName 속성에 κ²°ν•©ν•©λ‹ˆλ‹€. K

developer.android.com