DataBinding이란❓
- 데이터와 뷰를 연결하는 작업을 레이아웃에서 처리할수 있게 해주는 라이브러리(Jetpack)
- 글루코드를 최소화
- MVVM 패턴 구현시 LiveData 와 함께 거의 필수적으로 사용
글루코드란?
프로그램의 요구사항 구현에는 기여하지 않지만, 본래 호환성이 없는 부분끼리 결합하기 위해 작동하는 코드
장점
- Databinding을 사용하면 findViewById() 쓰지 않아도 xml에 만든 View들을 자동 생성
- Data가 바뀌면 알아서 바뀐 Data로 View를 변경가능 (옵저블 사용시)
databinding 사용기
0. gradle 추가
android {
buildFeatures{
dataBinding = true
}
}
1. xml 에 <layout> 및 <data> 추가
<?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"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="main"
type="com.mm.mj.MainActivity"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/hello_text_view"
android:text="Hello!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_change"
android:text="Text Change!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</layout>
2. Activity 에서 이벤트 추가
class MainActivity : AppCompatActivity() {
// xml 파일명의 카멜케이스로 자동으로 등록됨
private lateinit var binding: ActivityMainBinding
var text = "Hello!"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// binding 세팅
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
// 현재 binding시킨 xml의 variable name
binding.main = this
// binding 버튼 클릭 이벤트
binding.btnChange.setOnClickListener {
text = "Hello Binding!"
// Data가 변동될 경우 binding된 View들에 Data 변화를 알려줌
binding.invalidateAll()
}
}
}
간단한 Databinding 은 이런식으로 진행하고
다음은 LiveData 와 함께 어떤식으로 연동이되는 지 알아봐야겠다
반응형
'개발 > Android' 카테고리의 다른 글
[Android] Swiperefreshlayout 사용기 (0) | 2022.08.05 |
---|---|
[Android ] AAC란? (0) | 2022.08.04 |
[Android] Process 생명주기 (0) | 2022.08.01 |
[Android] Layout 종류 (0) | 2022.07.31 |
[Android] Retrofit2 와 OkHttp (0) | 2022.07.30 |
댓글