[Android] DataBinding

fanthasium·2022년 10월 13일
0

DataBinding (데이터 결합)

아니? view바인딩 이 끝이 아니였어?? 하겠지만!
그건 순전 view만을 바인딩 하는 방법이고
내부에서 view와 데이터 상호작용을 하기 위한 DataBinding에 대해서도 알아보자!


<사용 방법>

안드로이드 module수준 gradle에 추가

 dataBinding {
        enabled = true
    }

이후, xml을 보면 xml 코드는
<layout 태그안에 레이아웃을 작성해야한다.

<layout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
        <data>
            <variable
                name="viewmodel"
                type="com.myapp.data.ViewModel" />
        </data>
        <ConstraintLayout... /> <!-- UI layout's root element -->
    </layout>

<span태그에는 결합변수를 정해주어 name= 에는 xml에 대한 이름 type= 에는 XML이 사용될 activity,fragment 등에 대한 장소를 나타냅니다.

XML에서 사용할 준비가 되었다면 type에서 정해준 경로로 넘어가 activity를 작성해준다

class Example: AppCompatActivity() {

    private lateinit var binding: LoginMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.login_main)
    }

}

여기까지가 적용 방법이고 이제 우리는 DataBinding을 잘 써먹을 줄 알아야한다!!
안드로이드에서는 xml을 동적으로 사용할 수가 있다! 이는 activity에서 TextView에 내가 원하는 text를 넣는 다던지 ImageView에 내가 원하는 img를 넣는다던지.. 우리가 그런 것들을 하기 위해선 코틀린의 Data Class 를 사용할 수도 있고 onClick 함수자체를 선언해서 사용할수도 있다 방법은 다양하기에 기본적인 틀을 알아보자!
간단한 예제)

xml - 에서는 사용하고싶은 data 클래스를 참조변수를 통해 설정해주고 @{} 를 통해 text를 변경 시켜줄 수 있다

data class LoginData(
         val id = "user_1"
)
    <data>
      <variable
          name="login"
          type="com.dataclass.LoginData" />
  </data>
      <androidx.constraintlayout.widget.ConstraintLayout 
...
   <androidx.appcompat.widget.AppCompatTextView
       ...
          android:text="@{login.id}"
                                               ...
</androidx.constraintlayout.widget.ConstraintLayout>

activity에서 data 클래스에 데이터만 선언해준다면 text는 잘 나올 것이다

profile
디그다 디그다 (끙챠끙챠)

0개의 댓글