[kotlin] 리사이클러뷰 데이터 바인딩(Data Binding) 활용하기

안녕하세요! 이번에는 리사이클러뷰 데이터 바인딩(Data Binding)을 활용하는 방법에 대해 알아보겠습니다.

1. 데이터 바인딩(Data Binding)이란?

데이터 바인딩(Data Binding)은 안드로이드 앱에서 UI 컴포넌트와 앱의 데이터를 매핑하는 기술입니다. 리사이클러뷰(RecyclerView)에서 데이터 바인딩을 활용하면 각 아이템 뷰를 간편하게 업데이트하고 관리할 수 있습니다.

2. 데이터 바인딩(Data Binding) 설정하기

2.1 build.gradle에 의존성 추가하기

android {
    buildFeatures {
        dataBinding true
    }
}
dependencies {
    implementation "androidx.recyclerview:recyclerview:1.2.1"
    implementation "androidx.databinding:databinding-adapters:4.0.1"
}

2.2 XML 레이아웃에서 데이터 바인딩 설정하기

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="item"
            type="com.example.MyItem" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <!-- 아이템 뷰 내부의 뷰들과 데이터를 바인딩 -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{item.name}" />
    </LinearLayout>
</layout>

3. 어댑터에서 데이터 바인딩 설정하기

class MyAdapter(val items: List<MyItem>) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val inflater = LayoutInflater.from(parent.context)
        val binding = MyItemBinding.inflate(inflater, parent, false)
        return MyViewHolder(binding)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        val item = items[position]
        holder.bind(item)
    }

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

    class MyViewHolder(private val binding: MyItemBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(item: MyItem) {
            binding.item = item
            binding.executePendingBindings()
        }
    }
}

이제 리사이클러뷰(RecyclerView)에서 데이터 바인딩을 활용하여 간편하게 아이템 뷰를 업데이트하고 관리할 수 있습니다.

더 많은 내용을 학습하고 싶다면 Android 공식 데이터 바인딩 가이드를 참고해보세요.