1. gradle(app)
android{
dataBinding{
enabled=true
applyplugin:'kotlin-kapt'//코틀린 사용시 추가
}
}
2. xml <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"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/i_count_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="70sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<Button
android:id="@+id/i_btn_increase"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="++"
android:textSize="40sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<Button
android:id="@+id/i_btn_decrease"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:textSize="40sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
3. 코드 작성
class MainActivity : AppCompatActivity() {
var count : Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val binding : ActivityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main)
binding.iCountText.text = count.toString()
binding.iBtnIncrease.setOnClickListener {
count++
binding.iCountText.text = count.toString()
}
binding.iBtnDecrease.setOnClickListener {
count--
binding.iCountText.text = count.toString()
}
}
}
- DataBindingUtil로 layout 바인딩
- 바인딩 타입은 layout(카멜표기)+Binding
- 각 뷰들 이름은 카멜표기법
4. 실행
5. 문제점
라이프 사이클에 의존하기 때문에 화면 전환시
onDestroy()
onCreate()
호출로 데이터 초기화가 된다.
'안드로이드 > 디자인 패턴' 카테고리의 다른 글
[Android/안드로이드] 왜 MVP/MVVM을 사용해야 하는가? (feat. mvc,mvp,mvvm, acc를 활용한 mvvm 구현 예제 ) (0) | 2021.07.20 |
---|---|
[Android/안드로이드]LiveData 기본 예제 (0) | 2021.06.19 |
[Android/안드로이드]ViewModel 기본 예제 (0) | 2021.06.18 |