1) Все rx-интерфейсы должны возвращать List, а не MutableList! Это как постулат. Данные внутри rx должны быть иммутабельны!
2) вместо map {Floawable.fromIterable(it)} можно использовать flatMapIterable
3) getAllDetailItemsById должен тоже возвращать поток. Почему в мапе хождение в БД? работать с этим так
.flatMapIterable {
itemDao.allDetailItemsById(it.idItem)
.map { data -> mapper.mapDetailItem(it, data) }
}
4) "
которые затем будут добавлены в объект Item, а затем будет возвращен сам объект, у которого уже есть заполненное поле List" - смотри пункт 1). Item должен быть иммутабелен! Если в него надо что-то добавлять, то data class + copy(something = 123)
5) преобразовать стрим в список можно простым методом toList()