코틀린에서 데이터 바인딩을 사용하면 뷰와 레이아웃을 쉽게 바인딩할 수 있습니다. 또한 RecyclerView와 같은 뷰 그룹에서 뷰 홀더를 사용할 때도 데이터 바인딩을 통해 더 간편한 코드를 작성할 수 있습니다. 이 글에서는 코틀린에서 데이터 바인딩을 사용하여 뷰 홀더를 만들고 사용하는 방법에 대해 알아보겠습니다.
1. 데이터 바인딩 설정
build.gradle(Module: app) 파일에 다음 코드를 추가하여 데이터 바인딩을 활성화합니다.
android {
...
buildFeatures {
dataBinding true
}
}
2. 뷰 홀더 클래스 만들기
다음으로, 레이아웃 파일에서 사용할 모델 클래스와 바인딩하여 사용할 뷰 홀더 클래스를 만듭니다.
class ItemViewHolder(val binding: ItemLayoutBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(item: Item) {
binding.item = item
binding.executePendingBindings()
}
}
위 코드에서 ItemLayoutBinding
은 레이아웃 파일을 바인딩한 클래스입니다. executePendingBindings()
함수를 호출하여 즉시 데이터를 업데이트하도록 할 수 있습니다.
3. 어댑터에서 뷰 홀더 사용하기
이제 RecyclerView 어댑터에서 데이터 바인딩을 이용하여 뷰 홀더를 사용합니다.
class ItemAdapter(private val items: List<Item>) : RecyclerView.Adapter<ItemViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
val inflater = LayoutInflater.from(parent.context)
val binding = ItemLayoutBinding.inflate(inflater, parent, false)
return ItemViewHolder(binding)
}
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
holder.bind(items[position])
}
override fun getItemCount(): Int {
return items.size
}
}
위 코드에서 ItemLayoutBinding
은 해당 아이템을 표시하는 레이아웃 파일을 바인딩한 클래스입니다. onCreateViewHolder()
에서는 ItemLayoutBinding.inflate()
함수를 사용하여 레이아웃을 인플레이트하고 뷰 홀더를 생성합니다.
이제 데이터 바인딩을 사용하여 코틀린에서 뷰 홀더를 만들고 사용하는 방법에 대해 알아봤습니다. 데이터 바인딩을 활용하면 뷰 홀더를 통해 간단하게 RecyclerView와 같은 뷰 그룹을 구성할 수 있고, 반복적으로 일어나는 번거로운 작업을 줄일 수 있습니다.
참조: Android Developers - Data Binding