[kotlin] 데이터 바인딩 어댑터

안드로이드 앱을 개발할 때, RecyclerView를 사용하여 동적으로 데이터를 표시하는 것이 일반적입니다. 데이터 바인딩 라이브러리를 사용하면 RecyclerView와 데이터가 단일화되어 UI 업데이트를 더욱 쉽게 만들 수 있습니다. 이번 블로그에서는 데이터 바인딩 어댑터를 사용하여 RecyclerView에 데이터를 바인딩하는 방법을 알아보겠습니다.

데이터 바인딩 설정

먼저, 데이터 바인딩을 활성화하고 RecyclerView에 필요한 의존성을 추가해야 합니다.

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

dependencies {
    ...
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'androidx.databinding:databinding-runtime:4.1.1'
}

바인딩 어댑터 작성

다음으로, 데이터 바인딩 어댑터를 작성해야 합니다. 아래는 간단한 어댑터 클래스의 예시입니다.

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.example.myapp.databinding.ItemUserBinding

class UserAdapter(private val userList: List<User>) : RecyclerView.Adapter<UserAdapter.UserViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
        val binding = ItemUserBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return UserViewHolder(binding)
    }

    override fun getItemCount(): Int {
        return userList.size
    }

    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
        val user = userList[position]
        holder.bind(user)
    }

    class UserViewHolder(private val binding: ItemUserBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(user: User) {
            binding.user = user
            binding.executePendingBindings()
        }
    }
}

위의 코드에서 ItemUserBinding은 데이터 바인딩 라이브러리를 사용하여 자동으로 생성된 클래스입니다.

데이터 모델 클래스

마지막으로, 데이터 모델 클래스를 작성해야 합니다.

data class User(val name: String, val age: Int)

RecyclerView와 어댑터 연결

마지막으로, RecyclerView와 어댑터를 액티비티나 프래그먼트에서 연결해야 합니다.

val userRecyclerView = findViewById<RecyclerView>(R.id.userRecyclerView)
val users = listOf(User("John", 25), User("Anna", 30))
userRecyclerView.adapter = UserAdapter(users)

이제 데이터 바인딩 어댑터를 사용하여 RecyclerView에 데이터를 바인딩할 수 있습니다. 데이터 바인딩을 사용하면 UI 업데이트가 간단해지고 코드가 더 깔끔해집니다.

더 많은 정보를 원하신다면, 안드로이드 공식 문서를 참고하시기 바랍니다.