Конвертировать текучие материалы <Item>в текучиеили другой наблюдаемый - PullRequest
0 голосов
/ 13 октября 2018

Какой оператор следует использовать для преобразования многих Flowable<CurrencyStamp> в Flowable<List<CurrencyStamp>>?

Код преобразования:

public static Single<List<CurrencyStamp>> getStampByDay(String symbol, Date date, String... convertsSymbols){
    long count = 0;

    Single<List<CurrencyStamp>> result = null;
    while (count < secByDay){
        Flowable<CurrencyStamp> item = CoinApi.getCompareApi().getCurrencyHistory(symbol, date.getTime() - count,
                convertsSymbols).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());


        count += secByFiveMin;
    }

    return result;
}

В конструкции "while" мне нужно добавить каждый "элемент" в"base" и создайте Single<List<Currency>> (например) в результате

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Я пишу этот код:

public static Single<Currencies> getCurrencyFlowable(){

        Single<Currencies> usd = CoinApi.getMarketCupApi().getCurrencies();
        Single<Currencies> rub = CoinApi.getMarketCupApi().getCurrencies("RUB");
        Single<Currencies> eur = CoinApi.getMarketCupApi().getCurrencies("EUR");
        Single<Currencies> btc = CoinApi.getMarketCupApi().getCurrencies("BTC");

        List<Single<Currencies>> singles = new ArrayList<>();
        singles.add(usd);
        singles.add(rub);
        singles.add(eur);
        singles.add(btc);

        return Single.zip(singles, objects -> {
            Currencies[] currencies = new Currencies[objects.length];
            for (int i = 0; i < objects.length; i++) {
                currencies[i] = (Currencies)objects[i];
            }
            return ramming(currencies);
        }).subscribeOn(Schedulers.io() )
                .observeOn(AndroidSchedulers.mainThread());

    }

Работа для меня.

0 голосов
/ 13 октября 2018

Чтобы преобразовать Flowable в Flowable>, вы должны Flowable # toList, который будет возвращать Single>

Single<List<Integer>> listSingle = Flowable.just(1, 2, 3).toList();

Просто помните, что данный Single вернет только одно значение или ошибку.Собранный список будет выпущен, когда данный Flowable завершится.OnError в Flowable будет распространяться в Single с onError.

Внимание: когда Flowable бесконечен, вы вызовете утечку памяти, поскольку список никогда не будет генерироваться из-за отсутствия «onComplete» из данного Flowable.

...