Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
Cargar recicladorver diferentes tipos de adaptador con encabezado de mes

Intentando mostrar el nombre del mes como encabezado si obtiene un nombre de mes diferente de api. Aquí cargo el encabezado del mes, pero cuando cargo el encabezado no carga otra vista. Necesito que cargue el mes como encabezado si es diferente en datos y también cargue otro titular de vista.

Vi algunos ejemplos en los que todos usan groupItem dentro de la clase Model. No puedo cambiar la clase de modelo ahora. Si puede resolver esto sin él.

ReportsAdapter.kt

 class ReportsAdapter( private val onClickListener: (TimelineVisit) -> Unit ) : ListAdapter<TimelineVisit, RecyclerView.ViewHolder>( DiffUtil() ) { private var month: String = "" inner class ReportsViewHolder(private val binding: ItemVisitBinding) : RecyclerView.ViewHolder( binding.root ) { fun bind(item: TimelineVisit, onClickListener: (TimelineVisit) -> Unit) { binding.apply { linearLayoutPaymentStatus.visibility = View.GONE imgFeedback.visibility = View.GONE var text = item.visitFrom root.setOnClickListener { onClickListener.invoke(item) } } } } inner class MonthHeaderViewHolder(val binding: ItemMonthNameBinding, val bindingVisit: ItemVisitBinding) : RecyclerView.ViewHolder( binding.root ) { fun bind(month: String, item: TimelineVisit, onClickListener: (TimelineVisit) -> Unit) { bindingVisit.txtMonthName.text = month binding.apply { linearLayoutPaymentStatus.visibility = View.GONE imgFeedback.visibility = View.GONE var text = item.visitFrom root.setOnClickListener { onClickListener.invoke(item) } } } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { R.layout.asm_item_month_name -> { val monthView = ItemMonthNameBinding.inflate(LayoutInflater.from(parent.context), parent, false) val mView = ItemVisitBinding.inflate(LayoutInflater.from(parent.context), parent, false) MonthHeaderViewHolder(monthView, mView) } R.layout.asm_item_visit -> { val mView = ItemVisitBinding.inflate(LayoutInflater.from(parent.context), parent, false) ReportsViewHolder(mView) } else -> { val mView = ItemVisitBinding.inflate(LayoutInflater.from(parent.context), parent, false) ReportsViewHolder(mView) } } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (holder) { is ReportsAdapter.MonthHeaderViewHolder -> holder.bind(month, getItem(position), onClickListener ) is ReportsAdapter.ReportsViewHolder -> holder.bind(getItem(position), onClickListener) } } override fun getItemViewType(position: Int): Int { //if month get different month will load monthHeaderViewHolder val currentMonth = getItem(position).visitFrom return if (month != convertCurrentMonth) { month = convertCurrentMonth R.layout.item_month_name } else { R.layout.item_visit } } } class DiffUtil : DiffUtil.ItemCallback<TimelineVisit>() { override fun areItemsTheSame(oldItem: TimelineVisit, newItem: TimelineVisit): Boolean { return oldItem.profileId == newItem.profileId } override fun areContentsTheSame(oldItem: TimelineVisit, newItem: TimelineVisit): Boolean { return oldItem == newItem } }
over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda