Как я решил эту проблему для всех, кто заинтересовался.
при привязке данных, которые я передаю и в предыдущем элементе
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = getItem(position)
val previousItem = if (position == 0) null else getItem(position - 1)
holder.bind(item, previousItem)
}
Затем каждое представление устанавливает заголовок, который является толькостановится видимым, если предыдущий элемент не имеет того же заголовка.
val previousHeader = previousItem?.name?.capitalize().first()
val header = item?.name?.capitalize()?.first()
view.cachedContactHeader.text = header
view.cachedContactHeader.isVisible = previousHeader != header