Skip to content

Instantly share code, notes, and snippets.

@IvanAbakumov
Created February 24, 2020 13:16
Show Gist options
  • Save IvanAbakumov/7244555ec99185f6531440891c95822f to your computer and use it in GitHub Desktop.
Save IvanAbakumov/7244555ec99185f6531440891c95822f to your computer and use it in GitHub Desktop.
class OrderAdapter(val orderClicked: (order: GetUserAllOrderResponse.Order) -> Unit) : RecyclerView.Adapter<RecyclerView.ViewHolder>(){
var ordersList: List<OrderListItem> = listOf()
fun setData(list: List<OrderListItem>) {
ordersList = list
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return if (viewType == TYPE_ORDER) {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.item_order, parent, false)
OrderHolder(itemView)
} else {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.item_order_date, parent, false)
DateHolder(itemView)
}
}
class OrderHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
class DateHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
override fun getItemCount(): Int {
return ordersList.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val type = getItemViewType(position)
if (type == TYPE_ORDER) {
val order = ordersList[position] as GetUserAllOrderResponse.Order
holder.itemView.item_order_start_time.text = order.appointmentTimeFrom
holder.itemView.item_order_finish_time.text = order.appointmentTimeTo
holder.itemView.item_order_service_name.text = order.serviceName
holder.itemView.item_order_name.text = order.doctorName
setImageStatusForOrder(holder, order.orderStatusId!!)
holder.itemView.setOnClickListener {
orderClicked(order)
}
}
else {
val order = ordersList[position] as OrderListDateItem
holder.itemView.tvDate.text = getOrderListDate(order.date)
}
}
private fun setImageStatusForOrder(holder: RecyclerView.ViewHolder, orderStatusID: Int){
if(orderStatusID == ORDER_STATUS_ID_WAITING_DOCTOR_CONFIRMATION || orderStatusID == Constants.OrderStatusList.ORDER_STATUS_ID_DRAFT){
holder.itemView.item_order_status.setImageResource(R.drawable.ic_status_wait)
}
else if(orderStatusID == ORDER_STATUS_ID_SERVICE_IN_PROGRESS || orderStatusID == ORDER_STATUS_ID_FEEDBACK_STAGE || orderStatusID == ORDER_STATUS_ID_SENT_TO_SUPPORT ||
orderStatusID == ORDER_STATUS_ID_WAITING_PATIENT_CONFIRMATION || orderStatusID == ORDER_STATUS_ID_DOCTOR_ON_WAY || orderStatusID == ORDER_STATUS_ID_ACCEPTED_BY_DOCTOR){
holder.itemView.item_order_status.setImageResource(R.drawable.ic_status_success)
}
else if(orderStatusID == ORDER_STATUS_ID_SERVICE_COMPLETED){
holder.itemView.item_order_status.setImageResource(R.drawable.ic_status_success_archive)
}
else if(orderStatusID == ORDER_STATUS_ID_REJECTED_BY_DOCTOR || orderStatusID == ORDER_STATUS_ID_CANCELED_BY_PATIENT || orderStatusID == ORDER_STATUS_ID_CANCELED_BY_DOCTOR){
holder.itemView.item_order_status.setImageResource(R.drawable.ic_status_close_archive)
}
}
override fun getItemViewType(position: Int): Int {
return ordersList[position].getType()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment