1. 개요
데이터와 뷰를 연결하는 작업을 레이아웃에서 처리하는 기술을 데이터바인딩이라고 부릅니다.
뷰 바인딩을 포함하는 개념이지만, 뷰 바인딩이 상대적으로 간단하며 퍼포먼스 효율이 좋고 용량이 절약된다는 이점이 있습니다. 따라서 단순히 findViewById를 대체하기 위해서라면 뷰 바인딩을 사용하는 것을 구글이 권장하고 있습니다.
2. 사용법
1) 레이아웃
먼저 바인딩할 레이아웃을 만들어줍니다.
이때 최상위 태그는 <layout>이어야 하며, 그렇지 않을 경우 에러가 발생합니다.
아래 코드처럼 layout 태그가 전체 레이아웃을 포괄해야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
...
...
2) build.gradle(app) 파일
build.gradle(app) 파일의 android 블록 안에 다음과 같은 코드를 추가합니다.
buildFeatures{
dataBinding = true
}
만약 안드로이드 스튜디오 버전이 4.0 미만이라며 다음과 같이 해주면 됩니다.
dataBinding {
enabled true
}
3) 액티비티
액티비티에서 바인딩을 진행합니다.
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.user= UserProfile("K", "might")
}
}
4) 레이아웃 작성
data 태그 안에 variable을 사용해서 데이터와 뷰를 연결합니다. name에는 사용할 이름을, type에는 연결할 데이터의 경로를 적어주면 됩니다.
데이터에 접근할 때에는 @{name.OOO} 식으로 접근하면 됩니다.
아래 코드처럼 작성하면, 기존에 뷰 안에서 text를 설정했던 것처럼 화면이 나옵니다.
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<data>
<variable
name="user"
type="com.example.tmp.UserProfile" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50sp"
android:text="@{user.firstName}"/>
<TextView
android:layout_width="wrap_content"
android:textSize="50sp"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/>
</LinearLayout>
</layout>
3. 마무리
처음 접한다면 다소 어려운 개념이지만, 사용하다보면 분명 쉽게 익숙해질 수 있습니다. 따라서 이번 시간에 잘 정리되었으면 좋겠습니다.
728x90
반응형
'Android > 공부' 카테고리의 다른 글
에디트텍스트(EditText) 관련 짜투리 지식 2 (한 줄로 입력받기, 엔터키 이벤트, 키보드 사라지게 만들기) (0) | 2021.12.08 |
---|---|
AnimationDrawable 사용해서 애니메이션 만들기 (0) | 2021.12.07 |
ViewModel에 대해서 알아보자 (0) | 2021.12.05 |
커스텀 보틈시트(BottomSheet) 만들기 (0) | 2021.12.04 |
커스텀 스낵바, 커스텀 토스트 만들기 (0) | 2021.12.03 |