[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 - 데이터 바인딩를 확인해보세요.