티스토리 뷰
findViewById를 사용 안하는 방법이 없을까? 안드로이드 개발을 초창기부터 해오신 분들은 이런 고민을 많이 했을 것입니다. 이런 고민을 Android 을 사용하는 개발자 뿐만 아니라 Google 조차 이 부분을 고민하였고 개발자의 편의를 위한 노력을 하였습니다.
그렇다면 요즘 대표적 사용하는 패턴은 무엇일까요? 대표적으로는 Data Binding 이 있습니다. 이번 시간은 대부분의 개발자들이 알고 있을 수 있으나, 사용할 때 한번씩 검색할 수도 있는(?) Data Binding 사용법을 알아보겠습니다.
Data Binding 설정 방법
Data Binding을 사용하려면 APP build.gradle
에 DataBinding
사용 한다는 것을 명시해야합니다.
android {
...
buildFeatures {
dataBinding true
}
}
Activity Binding
Activity 에서 binding 을 쉽게 할 수 있도록 DataBindingUtil을 제공하고 있습니다. Activity의 binding은 DataBindingUtil.setContentView을 사용하면 binding 할 수 있습니다.
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
Fragment Binding
Fragment 에서도 binding 을 쉽게 할 수 있도록 DataBindingUtil을 제공하고 있습니다. DataBindingUtil.inflate을 사용하면 Binding 할 수 있습니다.
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)
View Binding
RecyclerView의 Row View와 같이 View를 사용하는 곳에서 Binding 을 하는 방법입니다.
inflate 로 해당 View에 대한 정보를 갖고 오고 DataBindingUtil.build(View)
을 통해서 View Binding 처리하는 것을 확인 할 수 있습니다.
View view = LayoutInflater.from(mContext).inflate(R.layout.view_component, null);
setContentView(view);
mBinding = DataBindingUtil.bind(view);
XML Data Obserbing 을 통한 UI 변경
Databinding Value를 xml 연결 시 연결한 Value를 observing 할 수 있습니다. 그러면obserbing 으로 설정된 Value가 변경 시 event를 받게되며 event value 값을 통해 UI를 실시간으로 변경 가능합니다.
class SampleActivity extends Activity {
...
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
mBinding.setView(this);
...
}
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="view"
type="com.test.sampe.SampleActivity" />
<variable
name="isValid"
type="java.lang.Boolean" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:visibility="@{isValid ? View.VISIBLE : View.GONE}"
android:background="@android:color/black" />
...
마무리
Data Binding 를 하는 방법을 간단히 알아봤습니다. Data Binding으로 java 또는 kotlin 코드에서 xml 에 있는 리소스를 가져오는 방법을 알아봤는데요.
gradle 환경이 올라가며 xml에서 binding 지원하는 기능이 축소 되었습니다. 그려먼서 안드로이드 디벨로퍼에서는 binding 을 사용하는 것보다 compose를 사용할 것을 가이드하고 있는데요. 앞으로 xml 로 개발하는 것보다 compose로 UI 구성하는 것이 표준으로 잡을 것으로 예상됩니다.
아직은 xml로 작성된 레거시 코드가 많고, 시니어 개발자는 xml 이 익숙하여 쉽게 compose 로 넘어가지는 않을거 같습니다. 아직은 유효한(?) Data Bidning을 프로젝트 특성에 맞게 잘 사용하면 좋겠습니다.
'프로그래밍 > Android' 카테고리의 다른 글
[Android] 클린아키텍처에 대해서 살짝 맛보기 (4) | 2024.10.29 |
---|---|
센서의 정확도 올리는 방법 (0) | 2024.08.27 |
Moshi & Retrofit 을 활용한 Dynamic JSON 직렬화 하는 방법 (0) | 2024.05.17 |
GitHub Copilot 사용해보기 (0) | 2024.04.20 |
AttributeSet 정의해서 사용해보기 (0) | 2023.08.22 |
- DI
- IOS
- Kotlin
- 탁구
- 고시문헬퍼
- flutter
- Android
- missionchina
- 스코어헬퍼
- 패턴
- push
- 코틀린
- view
- swift
- java
- issue
- MCC
- Android Studio
- 미션차이나센터
- 디자인패턴
- RXjava
- 알고리즘
- 임용고시
- 안드로이드
- 고시문
- 선교
- IT
- missioon
- 점수판
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |