From b2c8d611bc05ac21bc99db6ef850eedf16c6ff86 Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Tue, 7 Jun 2016 12:00:45 +0300 Subject: [PATCH] list request optimised --- .../collections/ObservableCollection.java | 32 +++---------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/src/main/java/ru/touchin/roboswag/core/observables/collections/ObservableCollection.java b/src/main/java/ru/touchin/roboswag/core/observables/collections/ObservableCollection.java index 130e399..5dc63e4 100644 --- a/src/main/java/ru/touchin/roboswag/core/observables/collections/ObservableCollection.java +++ b/src/main/java/ru/touchin/roboswag/core/observables/collections/ObservableCollection.java @@ -27,7 +27,6 @@ import java.util.Collections; import java.util.List; import rx.Observable; -import rx.internal.util.RxRingBuffer; import rx.subjects.PublishSubject; /** @@ -73,34 +72,11 @@ public abstract class ObservableCollection { @NonNull @SuppressWarnings("unchecked") public Observable> loadRange(final int first, final int last) { - final List>> itemsRequests = new ArrayList<>(); - - int index = first; - while (index <= last) { - final List> limitedPageRequests = new ArrayList<>(); - final int maxIndex = index + RxRingBuffer.SIZE - 1; - while (index <= Math.min(last, maxIndex)) { - limitedPageRequests.add(loadItem(index)); - index++; - } - itemsRequests.add(Observable.combineLatest(limitedPageRequests, args -> { - final List resultPart = new ArrayList<>(args.length); - for (final Object item : args) { - if (item != null) { - resultPart.add((TItem) item); - } - } - return resultPart; - })); + final List> itemsRequests = new ArrayList<>(); + for (int i = first; i <= last; i++) { + itemsRequests.add(loadItem(i)); } - - return Observable.combineLatest(itemsRequests, args -> { - final List result = new ArrayList<>(); - for (final Object resultPart : args) { - result.addAll((List) resultPart); - } - return result; - }); + return Observable.concatEager(itemsRequests).toList(); } public static class CollectionChange {