История "страдай с джавой, потому что надо" стрёмная. Не надо страдать и изучать сначала джаву, а потом котлин. Только нахватаешься плохих паттернов из неё и будет хуже жить.
Николай Unknown, я именно про статью, на которую ты сослался. Нет никакого смысла использовать Rx для того, чтобы единственным вызовом на цепочке был subscribe, который переложит данные в листенер. Ну это максимально тупо.
Вот по сути всё, что я описал в ответе можно сделать на Rx, и подписок там будет минимум.
Moiaposhta, ну я не буду за тебя писать. Хз, как там сейчас изучают - читай доку, книжку, статьи, курсы, видеолекции по теме "Цикл for в java". После этого то же самое по темам "Stream Api Java" и "Lambda Java".
Антон Логинов, тарам-парам-пам, фьють.. ха:(
Ну короче тебе надо поботать, что такое асинхронная функция, и что такое коллбек. Ты просто нотифицируешь адаптер ДО того, как данные в нём обновились. Перенеси в конец onComplete'a adapter.notifyDataSetChanged();
И ещё тебе стоит побольше думать "мой код делает что-то не то" перед тем, как говорить "один из краеугольных камней сломался".