JEP's Diary

Kotlin에서 DataBinding 사용하기 본문

Development/Kotlin

Kotlin에서 DataBinding 사용하기

지으니88 2018. 1. 16. 23:18

Kotlin에서 DataBinding 사용하기


Kotlin에서 DataBinding을 사용하려면 아주 간단한 설정 후 사용 할 수 있다.


1. build.gradle 설정

앱 모듈의 build.gradle에 databinding 요소를 추가한다.


 build.gradle

1
2
3
4
5
6
android {
    ....
    dataBinding {
        enabled = true
    }
}
cs



2. layout 파일

DataBinding 레이아웃 파일은 layout의 루트 태그로 시작하고 그 뒤에 data요소와 view루트 요소가 나온다.

따라서 xml 파일의 루트를 layout 태그로 감싼다.


activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="android.pje.com.webparsersample.MainActivity">
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!" />
 
    </RelativeLayout>
</layout>
cs


자바에서는 위의 1,2번 구성 후 DataBinding을 사용 할 수 있지만, Kotlin은 추가 설정이 필요하다.


3. DataBinding 사용

Activity에서 DataBinding을 사용해본다.


MainActivity.kt

1
2
3
4
5
6
7
8
9
class MainActivity : AppCompatActivity() {
 
    private lateinit var binding: ActivityMainBinding
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
    }
}
cs


여기까지 한 후 빌드를 해보면 컴파일 에러가 난다.

'Unresolved reference: ActivityMainBinding'

ActivityMainBinding를 참조하지 못하는 것이다.


4. build.gradle 추가 설정

kapt 플러그인을 추가해주고 DataBinding를 의존성을 아래와 같이 추가한다. 이때 버전은 gradle 버전과 같게 해준다.


build.gradle

1
2
3
4
5
6
7
8
9
10
11
apply plugin: 'kotlin-android'                       
apply plugin: 'kotlin-kapt'
 
...
...
 
 
dependencies {
    // notice that the compiler version must be the same than our gradle version
    kapt "com.android.databinding:compiler:3.0.1"
}
cs



5. import ActivityMainBinding

다시 화면으로 와서 참조되지 않았던 ActivityMainBinding을 import가 가능한 것을 볼 수 있다.

import 한 후 컴파일 에러가 사라진다.


MainActivity.kt

1
import android.pje.com.webparsersample.databinding.ActivityMainBinding
cs