I'm writing code to use multiple viewtype. But also I have to do inflate TextView.
I wanna inflate holder.participant using loop.
The raw data of participant is "AAA#BBB#CCC". using split method, I wanna inflate TextView.
what should I do for this? what I wanna say is how to inflate TextView or other views, not multiple viewtype.
class ScheduleAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
lateinit var view : View
lateinit var itemList: ArrayList<ScheduleItem>
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val context = parent.context
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
if(viewType == HEADER_TYPE){
view = inflater.inflate(R.layout.schedule_header,parent,false)
return HeaderViewHolder(view)
}
else if(viewType == ITEM_TYPE){
view = inflater.inflate(R.layout.schedule_item,parent,false)
return ItemViewHolder(view)
}else{
return HeaderViewHolder(view)
}
}
override fun getItemCount(): Int = itemList.size
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if(holder is HeaderViewHolder){
holder.startDay.text = itemList.get(position).startDay
}else if(holder is ItemViewHolder){
holder.time.text = itemList.get(position).startTime+"~"+itemList.get(position).endTime
holder.title.text = itemList.get(position).title
holder.participant.text = itemList.get(position).participant
holder.title.text = itemList.get(position).title
}
}
inner class HeaderViewHolder internal constructor(itemView: View) :
RecyclerView.ViewHolder(itemView) {
internal var startDay: TextView
init {
startDay = itemView.findViewById(R.id.startDay)
}
}
inner class ItemViewHolder internal constructor(itemView: View) :
RecyclerView.ViewHolder(itemView) {
internal var time: TextView
internal var title: TextView
internal var participant: TextView
internal var place: TextView
init {
time = itemView.findViewById(R.id.time)
title = itemView.findViewById(R.id.title)
participant = itemView.findViewById(R.id.participant)
place = itemView.findViewById(R.id.place)
}
}
fun addItems(items : ArrayList<ScheduleItem>){
items.addAll(items)
}
}