У меня есть таблица базы данных с дружескими соединениями:
Следующий пример - просто Imagined
, поэтому, пожалуйста, не предлагайте мне реализовать это по-другому.
FriendConnection:
У меня есть список с этими идентификаторами.
val friendConnections = arrayListOf(
FriendConnection(id=10, humanId=141),
FriendConnection(id=13, humanId=142)
)
Я хочу создать этот список результатов сRxJava.
val friendList = arrayListOf(
Friend(friendConnectionId = 10, humanId = 141, humanInstance = (...)),
Friend(friendConnectionId = 13, humanId = 142, humanInstance = (...))
)
Как я могу получить человека?
fun getHumanById(id: Long) : Single<Human>
Поэтому мне нужно повторить friendConnections
и сделать одиночный вызов для каждого Человека.Чем мне нужно сопоставить FriendConnection с новым экземпляром Human для экземпляра Friend.
Я пробовал, но это не сработало:
Observable.fromIterable(arrayListOf(
FriendConnection(id=10, humanId=141),
FriendConnection(id=13, humanId=142)
))
.flatMapSingle { friendConnection ->
repository.getHumanById(friendConnection.humanId)
?.map {human ->
Friend(friendConnection.id,friendConnection.humanId,human)
}
}
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ it ->
Timber.i("friendList is here: $it")
}, {
throw it
})
Кто-то знает, что не так?(Я хочу реализовать это с Rx, а не с комнатой)