Frontend/Android
Android, Jetpack data binding
Roiei
2023. 1. 29. 21:31
반응형
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
}
...
}
반응형