[kotlin] 코틀린 데이터 바인딩을 사용하여 뷰 홀더를 사용하는 방법

코틀린에서 데이터 바인딩을 사용하면 뷰와 레이아웃을 쉽게 바인딩할 수 있습니다. 또한 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