Один из способов обхода проблемы - зарегистрировать AdapterDataObserver в адаптере представления ресайклера, переопределив метод onItemRangeInserted, как в следующем коде. Когда что-то вставляется в позицию 0, он автоматически запускает layoutManager для прокрутки до начала списка.
С этим подходом recyclerview действительно будет прокручиваться вверх, но только после прокрутки до конца. И это немного раздражает. Кто-нибудь знает, как сделать так, чтобы оно оставалось на вершине, не доходя до конца?
adapter?.registerAdapterDataObserver(object: RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
if (positionStart == 0) layoutManager?.scrollToPosition(0)
}
})