[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 업데이트가 간단해지고 코드가 더 깔끔해집니다.
더 많은 정보를 원하신다면, 안드로이드 공식 문서를 참고하시기 바랍니다.