Это потому, что в вашем методе расчета вы меняете макет, например, текст, настройки ресурса изображения и т. Д., Поэтому при первом вызове вам нужно удалить прослушиватель, чтобы избежать прослушивания следующих событий GlobalLayout.
и лучше удалить removeOnGlobalLayoutListener в первой строке:
my_rv.viewTreeObserver.addOnGlobalLayoutListener {
my_rv.viewTreeObserver.removeOnGlobalLayoutListener(this)
calculate(myAdapter.getItems())
}