Очевидно, в классе-адаптере неверно описана логику работа с данным.
Должна быть синхронность модели (того что у вас поле `dataSource`) и ViewHolder-а.
Практически, это значит, что в методе (исходя из того, что используется RecyclerView)
`getItemViewType` должен возвращаться уникальный идентификатор-int для каждого класса-модели. Например
override fun getItemViewType(position: Int): Int {
return when (val item = dataSource[position]) {
is FirstLetter -> 1
is Acronym ->2
else -> throw IllegalArgumentException("unknown item type $item")
}
}
а в `onCreateViewHolder` должен возвращаться такой ViewHolder, который соответсвует уникальному идентификатору для позиции (например для `viewType == 1` должен создаваться `FirstLetterViewHolder`)
Таким образом будет организованность синхронность ViewHolder'ов и модели.
Т.е, если в метод onBindViewHolder передался `AcronymViewHolder` то в dataSource[position] всегдя будет лежать `Acronym`