Tsudzukeru
@Tsudzukeru

Как отфильтровать Single?

Есть метод, возвращающий Single>:
@GET("task-m-001/list.php")
    fun getItems(): Single<List<String>>


Внутри списка лежат ссылки на картинки. Некоторые из них битые и picasso их не грузит. Мне нужно как то отфильтровать их. Как это сделать?

Мне нужно превратить Single> в множество Observable, прозвонить ссылку. Если она рабочая то добавить в list, если битая то пропустить.

Пробовал это сделать через flatMap, но чет не получается.

Мой метод выглядит вот так:

fun getItems(){
        _networkState.postValue(NetworkState.LOADING)

        try {
            compositeDisposable.add(
                apiService.getItems()
                    .observeOn(Schedulers.io())
                    .subscribeOn(Schedulers.io())
                    .subscribe({
                        val itemsResponse = itemsResponseConverter.getItemResponse(it)
                        _downloadedItemsResponse.postValue(itemsResponse)
                        _networkState.postValue(NetworkState.LOADED)
                    },
                        {
                            _networkState.postValue(NetworkState.ERROR)
                        })
            )
        }catch (e: Exception) {
            Log.e(TAG, e.message.toString())
        }
    }
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Не увидел в твоем коде flatMap.
Но вообще будет примерно так
getItems()
.flatMapObservable { items ->
    Observable.fromIterable(items).switchMap { "прозвонить ссылку, что бы это не значило" }
}.toList()

На выходе получится Single<List<String>>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы