-
(1분 읽기) 데이터 바인딩(Data Binding) 완벽 정리! 📚Android 개발/개념 & 기초 2025. 1. 24. 21:46
안드로이드 개발할 때 **findViewById()**로 고생한 적 있지? 😫
이제는 Data Binding을 사용하면 코드가 훨씬 깔끔하고 유지보수도 쉬워져!
MVVM 아키텍처와 찰떡궁합인 Data Binding!
오늘 완벽하게 이해하고 면접에서도 자신 있게 답변해보자! 🚀
💡 Data Binding이란?
Data Binding은 **XML(View)**과 **코드(ViewModel)**를 직접 연결해서
데이터 변화가 자동으로 UI에 반영되도록 하는 Android 기술이야.- 🎉 findViewById() 필요 없음!
- 🔄 양방향 바인딩으로 데이터와 UI가 실시간으로 싱크 맞출 수 있어!
<layout> <data> <variable name="viewModel" type="com.example.ViewModel" /> </data> <TextView android:text="@{viewModel.text}" /> </layout>
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main) binding.viewModel = myViewModel binding.lifecycleOwner = this
🎯 Data Binding의 장점
✅ 1. 코드 간소화 🪄
- findViewById() 없이 XML에서 바로 데이터 사용 가능
- android:text="@{viewModel.text}"처럼 선언적으로 표현 가능
✅ 2. LiveData와 찰떡궁합 ❤️
- LiveData가 변경되면 자동으로 UI에 반영돼
- UI 상태를 직관적이고 선언적으로 표현할 수 있어
✅ 3. 양방향 바인딩 ↔️
- @={} 사용해서 데이터 ↔️ UI 변경 감지 가능
- 예: 사용자가 EditText에 입력하면 ViewModel에도 자동 반영
<EditText android:text="@={viewModel.inputText}" />
⚠️ 단점도 있다!
❌ 1. 강한 결합
- XML과 ViewModel이 강하게 연결돼 있어서
- ViewModel 수정 시 XML도 수정해야 해
- 유지보수가 어려울 수 있어 🛠️
❌ 2. 디버깅 어려움
- Data Binding 관련 에러는 컴파일 시점에 확인 불가
- 런타임 에러로 발생해서 디버깅이 힘들어 😭
❌ 3. KSP 미지원
- Google이 KAPT만 지원하고 있어서
- KSP와 함께 사용하기가 어려워 😢
🔧 Data Binding 설정 방법
1️⃣ build.gradle 설정
buildFeatures { dataBinding = true }
2️⃣ KAPT 설정 (필요 시)
id("kotlin-kapt")
🎨 Data Binding 사용법
1️⃣ 단방향 바인딩
- ViewModel → UI
<TextView android:text="@{viewModel.name}" />
2️⃣ 양방향 바인딩
- 데이터 ↔️ UI 변경 감지
<EditText android:text="@={viewModel.inputText}" />
3️⃣ BindingAdapter 활용
- 커스텀 바인딩 로직 추가 가능!
@BindingAdapter("imageResource") fun setImageResource(view: ImageView, resId: Int) { view.setImageResource(resId) }
🏆 면접에서 이렇게 답변하자! 🚀
"Data Binding은 XML과 ViewModel을 직접 연결해서 데이터 변화를 자동으로 UI에 반영하는 기술입니다. findViewById() 없이 XML에서 바로 데이터를 사용할 수 있어 코드가 간결해지고, LiveData와의 결합으로 데이터 변경 시 UI가 자동 갱신됩니다. 또한 @={}를 통해 양방향 바인딩이 가능해 UI와 데이터가 실시간으로 동기화됩니다. 그러나 XML과 ViewModel이 강하게 결합돼 유지보수가 어려울 수 있고, 디버깅이 어렵다는 단점도 있습니다. 상황에 따라 View Binding이나 Compose를 선택할 수도 있습니다."
🎯 언제 사용하면 좋을까?
- MVVM 아키텍처 사용 시 💎
- LiveData와 함께 UI 상태 실시간 반영이 필요할 때
- 양방향 바인딩이 필요한 폼 입력 화면
🚫 언제 피해야 할까?
- 디버깅이 중요한 프로젝트 (디버깅이 어려움)
- UI가 단순하거나 findViewById()만으로 충분할 때
- KSP와 함께 사용해야 할 때
🚀 요약 정리
- Data Binding: XML과 ViewModel을 직접 연결해 데이터 변화에 따른 UI 자동 반영
- 장점: 코드 간소화, LiveData 연동, 양방향 바인딩
- 단점: 강한 결합, 디버깅 어려움, KSP 미지원
- MVVM 아키텍처와 LiveData 사용 시 가장 빛남!
- 단순한 UI는 View Binding, **복잡한 UI는 Data Binding` 추천!
이제 Data Binding의 장점과 단점까지 완벽하게 이해했지? 😎
면접 질문에도 당황하지 않고 자신 있게 대답할 수 있을 거야! 🚀
MVVM 아키텍처와 LiveData와의 궁합도 최고니까 상황에 맞게 활용해봐! 🎉'Android 개발 > 개념 & 기초' 카테고리의 다른 글
(30초 읽기) 뷰 바인딩(ViewBinding) 한방 정리 🧲 (0) 2025.01.31 (30초 읽기) BottomSheetDialogFragment에서 childFragmentManager가 필요한 이유 🤔 (0) 2025.01.30 (1분 읽기) 안드로이드 플러그인이란? 🤔 (0) 2025.01.22 (1분 읽기) LocalDate와 @RequiresApi 완벽 이해하기 📆 (0) 2025.01.17 (1분 읽기) 안드로이드 스튜디오 꿀팁! 내 파일 어디서 쓰였지? 🔎✨ (0) 2025.01.17