Android, Jetpack data binding

2023. 1. 29. 21:31Frontend/Android

    목차
반응형

Jetpack data binding

layout XML 내 data를 직접 binding 하여 activity에서 access 할 수 있습니다.

ViewModel 내의 data layout XML에 직접 연결합니다.

LiveData와 보통 함께 사용합니다.

findViewById<TextView>(R.id.txtSample).apply {
    text = viewModel.name
}

위와 같이 사용하던 코드를 아래와 같이 binding하여 처리 가능합니다.

<TextView
    android:text="@{viewmodel.name}" />

layout XML file에 element를 추가합니다.

이후 layout XML file에 element를 추가합니다.

bindig library

build.gradle 수정

...
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    dataBinding {
        enabled = true
    }

    ...
}

위와 같이 수정한 뒤 edit 화면 우측 상단에 "sync now"를 클릭하여 동기화 합니다.

main_fragment.xml layout file 수정

root에 layout element 추가
MainFragmentBinding 객체가 자동으로 생성됩니다.

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        ...

   <data>
      <variable
        name="myViewModel"
        type="com.example.databinding.ui.main.MainViewModel" />
   </data>

   <androidx.constraintlayout.widget.ConstraintLayout
       ...

MainFragment

LayoutInfrator.inflate를 DataBindingUtil.inflate로 교체

class ... {
    private lateinit var binding: MainFragmentBinding

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        binding = DataBindingUtil.inflate(
            inflater, R.layout.main_fragment, container, false
        )

        binding.setLifecycleOwner(this)

        return binding.root
    }
    ...
}
반응형

'Frontend > Android' 카테고리의 다른 글

Android widgets  (0) 2023.02.04
Kotlin map  (0) 2023.01.31
Android RecyclerView  (0) 2023.01.29
Jetpack architecture  (0) 2023.01.29
Android Jetpack  (0) 2023.01.29