Рассмотрим следующий вход: вызов сетевого вызова вернет объект клиента
data class Client(
val name: String,
val phoneNumber: String,
val frequentContacts: List<String>,
val allContacts: List<String>
)
Мне нужно сопоставить похожие имена в списке рассылки часто встречающихся и всех контактов в новом объекте и подписаться на вывод.
предположим, что ответ от сетевого вызова вернет этот клиентский объект
{
"name": "Jack",
"phoneNumber": "90284302424",
"frequentContacts": [
"John",
"Sam"
],
"allContacts": [
"John",
"Adam",
"Peter",
"Kim",
"Sam"
]
}
что мне нужно получить при подписке на вновь создаваемый объект.
data class clientViewModel(val name: String,val isFrequent: Boolean)
поэтому в onSuccess у меня должен быть экземпляр из clientViewModel
Ожидаемый результат:
(«Джон», правда »)
(«Адам», ложь »)
(«Петр», ложь »)
("Ким", ложь ")
("Сэм", правда ")
вот что я до
clientRepository.getClientById(clientId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate { view.hideProgress() }
.flatMap{it.frequentContacts}
.subscribe{
onSuccess(item: ClientViewModel){}
onError(){}
onFinish(){}
}
но это не работает, потому что как только я использую плоскую карту, я теряю список всех контактов
любая помощь ?
Я читал об операторе GroupBy, но я использую Single ...