Android, Jetpack data binding
2023. 1. 29. 21:31ㆍFrontend/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 |