반응형
- RecyclerView에 헤더 뷰를 추가합니다.
- RecyclerView에 데이터 어댑터를 추가합니다.
- 어댑터에서 getItemViewType() 메서드를 오버라이드하여 헤더와 아이템을 구분하는 뷰 유형을 반환합니다.
- onCreateViewHolder() 메서드에서 뷰 홀더를 생성할 때, 뷰 유형에 따라서 헤더 뷰 또는 아이템 뷰를 생성합니다.
- onBindViewHolder() 메서드에서 뷰 홀더를 바인딩할 때, 헤더 뷰의 데이터를 설정합니다.
- getItemCount() 메서드에서는 아이템 수와 헤더를 포함한 전체 아이템 수를 반환합니다.
class MyAdapter(private val data: List<String>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private val TYPE_HEADER = 0
private val TYPE_ITEM = 1
override fun getItemViewType(position: Int): Int {
return if (position == 0) TYPE_HEADER else TYPE_ITEM
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return if (viewType == TYPE_HEADER) {
val view = LayoutInflater.from(parent.context).inflate(R.layout.header_layout, parent, false)
HeaderViewHolder(view)
} else {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
ItemViewHolder(view)
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (holder is HeaderViewHolder) {
holder.bind()
} else {
val itemPosition = position - 1
val item = data[itemPosition]
(holder as ItemViewHolder).bind(item)
}
}
override fun getItemCount(): Int {
return data.size + 1 // 헤더를 포함한 전체 아이템 수
}
inner class HeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind() {
// 헤더 뷰에 데이터를 설정하는 코드
}
}
inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(item: String) {
// 아이템 뷰에 데이터를 설정하는 코드
}
}
}
위 코드에서 R.layout.header_layout은 헤더 뷰의 레이아웃 리소스를, R.layout.item_layout은 아이템 뷰의 레이아웃 리소스를 나타냅니다. bind() 메서드에서는 해당 뷰에 데이터를 설정하는 코드를 작성하면 됩니다.
반응형
'Android' 카테고리의 다른 글
Kotlin 한글자씩 String 분리하기 (0) | 2023.04.24 |
---|---|
Kotlin 에서 getColor 사용하기 Deprecated in API level 23 (0) | 2023.04.19 |
Android Hilt를 이용한 의존성주입 이해하기 (0) | 2023.04.16 |
Recommend 10 sites to help developers (0) | 2023.04.07 |
Kotlin 널 안전성이란 (0) | 2023.04.03 |
댓글