DataBinding
Android JetPack 라이브러리의 하나의 기능으로 xml파일에 Data를 연결해서 사용할 수 있게 도와준다.
Activity에서 findViewById()를 통해서 View를 가져올 필요가 없고, 연결된 데이터가 변할 때 쉽게 View에 변경된 데이터를 반영할 수 있는 장점이 있다.
기본 사용방법
1. build.gradle에 dataBinding 추가
android {
...
dataBinding {
enabled = true
}
}
2. 레이아웃 파일 수정
- 루트를 layout으로 설정
- data 태그 추가
// databinding_example.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="android.view.View"/>
<variable
name="test"
type="com.example.databinding.MainActivity" />
</data>
<LinearLayout
android:orientation="vertical"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{test.text}'
android:visibility='@{test.isClicked == true ? View.GONE : View.VISIBLE}' />
<Button
android:id="@+id/hideButton"
android:text="Hide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</layout>
3. 데이터 바인딩 설정
// databinding_main.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import com.example.databinding.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
var text = "Hello World!"
var isClicked = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.test = this
binding.hideButton.setOnClickListener {
isClicked = !isClicked
binding.invalidateAll()
}
}
}
더보기
Reference