이번 포스팅부터는 Jetpack을 이루는 각각의 Library에 대해서 정리해보려고 합니다.
Data Binding
Data Binding이란 말 그대로 "데이터를 연결한다" 입니다. 어디에? UI에 연결하는 것입니다. 정확히는 Data source를 UI에 바인딩을 하는데, 이것을 선언적(declarative)형식 으로 바인딩하는 것입니다.
Jetpack 이전에는 XML에 Layout을 구성하고 Layout에 선언한 di를 가져와 연결하는 방식으로 프로그래밍 되었습니다.진행되었습니다.
findViewById<TextView>(R.id.sample_text).apply {
text = viewModel.userName
}
하지만 Data Binding은 위에서 말했던 선언적 형식으로 코드를 작성합니다. 즉, Layout 파일에 바로 해당 값을 할당할 수 있습니다.
<TextView
android:text="@{viewmodel.userName}" />
위의 코드로 작성하게되면서, 기존 Activity 내에서 작성한 코드를 통해 추가로 호출할 필요가 없어지면서 유지 보수에 편하게 간단해졌습니다. 개발자 문서에는 추가적으로 Memory Leak과 NPE(Null Point Exception)을 방지할 수 있게 되었다고 소개되어있습니다.
data class User(val firstName: String, val lastName: String)
3. Data 연결
1번에서 작성한 Layout 파일에 대한 Class가 생성이 됩니다. 기본적으로는, Class 이름은 Layout 파일을 기반으로 만들어집니다. 아래 예시처럼 Layout 파일 명이activity_main.xml 이라면, Class는ActivityMainBinding 추가로, Data 연결 시 예제 코드는 아래와 같습니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(
this, R.layout.activity_main)
binding.user = User("Test", "User")
}
추가로, Fragment, ListView, RecyclerView 관련 데이터를 사용하기 위해서는 아래와 같이 inflate()를 사용해야 합니다.
val listItemBinding = ListItemBinding.inflate(layoutInflater, viewGroup, false)
// or
val listItemBinding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false)
[Android] Jetpack - Data Binding - 1
이전 포스팅에서는 Jetpack에 대한 간략한 정리를 해보았습니다.
[Android] Jetpack
이전 포스팅에서는 Android에서의 Clean architecture에 대한 정리를 하였습니다. 이번에는 Android에서의 Clean architecture를 편리하게 적용할 수 있게 해주는 Jetpack 에 대해 정리하려 합니다. 현 시점에서
weirddev.tistory.com
이번 포스팅부터는 Jetpack을 이루는 각각의 Library에 대해서 정리해보려고 합니다.
Data Binding
Data Binding이란 말 그대로 "데이터를 연결한다" 입니다. 어디에? UI에 연결하는 것입니다.
정확히는 Data source를 UI에 바인딩을 하는데, 이것을 선언적(declarative) 형식 으로 바인딩하는 것입니다.
Jetpack 이전에는 XML에 Layout을 구성하고 Layout에 선언한 di를 가져와 연결하는 방식으로 프로그래밍 되었습니다.진행되었습니다.
하지만 Data Binding은 위에서 말했던 선언적 형식으로 코드를 작성합니다. 즉, Layout 파일에 바로 해당 값을 할당할 수 있습니다.
위의 코드로 작성하게되면서, 기존 Activity 내에서 작성한 코드를 통해 추가로 호출할 필요가 없어지면서 유지 보수에 편하게 간단해졌습니다. 개발자 문서에는 추가적으로 Memory Leak과 NPE(Null Point Exception)을 방지할 수 있게 되었다고 소개되어있습니다.
Data Binding 사용하기
1. Layout 파일 작성
Data Binding을 사용하려면 build.gradle에 항목을 추가해야 합니다.
이후 Layout 파일을 작성해야 하는데, Layout 파일의 최상단 태그가 <layout>으로 선언되어야 하고, 해당 태크 안에 Data Binding 하는 코드를 작성해야 합니다.
그리고, user는 Layout 안에서 사용되는 property를 가리킵니다.
Layout 안에 표현식은 "@{}" 을 사용하여 해당 표현식 내에 작성합니다.
2. Data Class 작성
Data Binding을 사용하려면 build.gradle에 항목을 추가해야 합니다.
3. Data 연결
1번에서 작성한 Layout 파일에 대한 Class가 생성이 됩니다. 기본적으로는, Class 이름은 Layout 파일을 기반으로 만들어집니다. 아래 예시처럼 Layout 파일 명이 activity_main.xml 이라면, Class는 ActivityMainBinding
추가로, Data 연결 시 예제 코드는 아래와 같습니다.
추가로, Fragment, ListView, RecyclerView 관련 데이터를 사용하기 위해서는 아래와 같이 inflate()를 사용해야 합니다.
다음 포스팅에서는 Data Binding에 대한 추가적인 사용법을 정리해보겠습니다.
'DEV > Android' 카테고리의 다른 글