안드로이드

[Android] 데이터 바인딩(DataBinding)

코딩하는후운 2022. 10. 24. 09:00
반응형

데이터 바인딩(DataBinding)

- 데이터 바인딩은 데이터를 xml상에 바로 연동시키는 작업을 말합니다.

1.APP단계의 build.gradle에 dataBinding을 추가해 줍니다.
dataBinding{
  enable = true
}

에러) unresolved reference databinding발생
kotlin으로 작업 할 때 바인딩 에어가 발생할 수 있습니다.
https://gogorchg.tistory.com/entry/Kotlin-unresolved-reference-databinding
링크를 통해 에러를 해결하세요.

혹은 APP단계의 build.gradle상단에
apply plugin: 'kotlin-kapt'
코드만 붙여줘도 충분히 해결이 된답니다.


2.User 클래스를 새로 만들어 줍니다.
class User(val firstName: String, val lastName: String)


3. activity_main.xml을 <layout>으로 둘러 싸도록 합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

  <LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

  </LinearLayout>

</layout>

xml을<layout>으로 둘러 싸면 바인딩된 xml을 불러다 사용할 수 있게 됩니다.

이제 위 코드에서 User클래스를 바인딩 해주겠습니다.

<data>
  <!-- data 이름을 user로 설정하였습니다. -->
  <!-- type 은 User 클래스 위치와 함께 표시되어야 합니다. -->
  <variable name="user" type="{packageName}.User" />
</data>


5. User에 데이터를 넣고 화면에 보이게 해줍니다.
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 = User("Black", "Jin")
  }
}

2번에서 activity_main을 <layer>로 감싸주었습니다. 그렇게 되면 ActivityMainBinding이라는 클래스가
내부적으로 자동 생성됩니다.
(생성이 안되 있다면 Build - Rebuild Project를 실행해 주세요.)

firstName = "Black", lastName = "Jin" 데이터를 가지는 User클래스를 생성한 후 binding변수에
setUser해주면 User데이터가 가지고 있는 firstName과 lastName이 자동으로 xml에 적용됩니다.

<!-- user의 firstName 을 설정해줍니다. -->
<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@{user.firstName}"/>

TextView의 아이디를 설정해 주지 않고 setText를 안해줘도 xml상에서 바로 데이터를 입력해 줄 수 있는 데이터바인딩

 

 

참조 :

https://black-jin0427.tistory.com/75?category=727620 

 

[Android, Databinding] 데이터 바인딩 라이브러리 사용기

안녕하세요. 블랙진입니다. 이번 시간에는 데이터 바인딩에 대해 포스팅 해보겠습니다. source of the image 데이턴 바인딩은 데이터를 xml 상에 바로 연동시키는 작업을 말합니다. 자바 코드상에서 te

black-jin0427.tistory.com

 

반응형