[kotlin] 데이터 바인딩 리스트뷰

안녕하세요! 이번에는 Kotlin에서 데이터 바인딩을 사용하여 리스트뷰를 만드는 방법에 대해 알아보겠습니다.

데이터 클래스 만들기

우선, 리스트뷰의 아이템에 표시할 데이터 모델인 데이터 클래스를 만듭니다.

data class Item(val name: String, val description: String)

XML 레이아웃 정의

리스트뷰의 아이템을 표시하기 위한 XML 레이아웃을 정의합니다. 여기서 데이터 바인딩을 사용하여 데이터와 레이아웃을 연결합니다.

<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <variable
            name="item"
            type="com.example.Item" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/nameTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{item.name}" />

        <TextView
            android:id="@+id/descriptionTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{item.description}" />
    </LinearLayout>
</layout>

어댑터와 뷰홀더 만들기

리스트뷰의 어댑터와 뷰홀더 클래스를 만듭니다. 이때 데이터 바인딩을 사용하여 XML 레이아웃과 데이터를 연결합니다.

class ItemAdapter(private val items: List<Item>) : RecyclerView.Adapter<ItemAdapter.ViewHolder>() {

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

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

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

    inner class ViewHolder(private val binding: ItemBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(item: Item) {
            binding.item = item
        }
    }
}

리스트뷰에 어댑터 연결

마지막으로, 액티비티나 프래그먼트에서 리스트뷰에 어댑터를 연결합니다.

val items = listOf(
    Item("첫 번째 아이템", "첫 번째 아이템 설명"),
    Item("두 번째 아이템", "두 번째 아이템 설명"),
    // 나머지 아이템들 추가
)

val adapter = ItemAdapter(items)
listView.adapter = adapter

이렇게 함으로써, 데이터 바인딩을 사용하여 Kotlin에서 리스트뷰를 만들었습니다. 간편하게 데이터와 XML 레이아웃을 연결하여 보다 간결하고 가독성 높은 코드를 구현할 수 있습니다.

더 많은 정보를 원하시면 Android Developers - 데이터 바인딩를 확인해보세요.