some renamings
This commit is contained in:
parent
30ad6cf4c5
commit
c470691437
|
|
@ -42,36 +42,36 @@ import rx.subjects.BehaviorSubject;
|
|||
* Created by Gavriil Sitnikov on 23/05/16.
|
||||
* TODO: description
|
||||
*/
|
||||
public class LoadingMoreList<TItem, TReference, TLoadedItems extends LoadedItems<TItem, TReference>>
|
||||
public class LoadingMoreList<TItem, TMoreReference, TLoadedItems extends LoadedItems<TItem, TMoreReference>>
|
||||
extends ObservableCollection<TItem> {
|
||||
|
||||
@NonNull
|
||||
private final Scheduler loaderScheduler = RxAndroidUtils.createLooperScheduler();
|
||||
@NonNull
|
||||
private Observable<TLoadedItems> loadingMoreConcreteObservable;
|
||||
private Observable<TLoadedItems> loadingMoreObservable;
|
||||
@NonNull
|
||||
private final BehaviorSubject<Integer> moreItemsCount = BehaviorSubject.create(LoadedItems.UNKNOWN_ITEMS_COUNT);
|
||||
@NonNull
|
||||
private final ObservableList<TItem> innerList = new ObservableList<>();
|
||||
private boolean removeDuplicates;
|
||||
@Nullable
|
||||
private TReference moreItemsReference;
|
||||
private TMoreReference moreItemsReference;
|
||||
|
||||
public LoadingMoreList(@NonNull final MoreItemsLoader<TItem, TReference, TLoadedItems> moreMoreItemsLoader) {
|
||||
public LoadingMoreList(@NonNull final MoreItemsLoader<TItem, TMoreReference, TLoadedItems> moreMoreItemsLoader) {
|
||||
this(moreMoreItemsLoader, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings("PMD.ConstructorCallsOverridableMethod")
|
||||
//ConstructorCallsOverridableMethod: actually it is calling in lambda callback
|
||||
public LoadingMoreList(@NonNull final MoreItemsLoader<TItem, TReference, TLoadedItems> moreMoreItemsLoader,
|
||||
public LoadingMoreList(@NonNull final MoreItemsLoader<TItem, TMoreReference, TLoadedItems> moreMoreItemsLoader,
|
||||
@Nullable final TLoadedItems initialItems) {
|
||||
super();
|
||||
this.loadingMoreConcreteObservable = Observable
|
||||
.<TLoadedItems>switchOnNext(Observable.create(subscriber -> {
|
||||
subscriber.onNext(moreMoreItemsLoader.load(new MoreLoadRequest<>(moreItemsReference, Math.max(0, size()))));
|
||||
this.loadingMoreObservable = Observable
|
||||
.switchOnNext(Observable.<Observable<TLoadedItems>>create(subscriber -> {
|
||||
subscriber.onNext(moreMoreItemsLoader.load(new MoreLoadRequest<>(moreItemsReference, Math.max(0, size())))
|
||||
.subscribeOn(Schedulers.io()));
|
||||
subscriber.onCompleted();
|
||||
}))
|
||||
.subscribeOn(Schedulers.io())
|
||||
}).subscribeOn(loaderScheduler))
|
||||
.single()
|
||||
.doOnError(throwable -> {
|
||||
if ((throwable instanceof IllegalArgumentException)
|
||||
|
|
@ -175,6 +175,11 @@ public class LoadingMoreList<TItem, TReference, TLoadedItems extends LoadedItems
|
|||
return innerList.getItems();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
protected Observable<TLoadedItems> getLoadingMoreObservable() {
|
||||
return loadingMoreObservable;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Observable<TItem> loadItem(final int position) {
|
||||
|
|
@ -186,7 +191,7 @@ public class LoadingMoreList<TItem, TReference, TLoadedItems extends LoadedItems
|
|||
} else if (moreItemsCount.getValue() == 0) {
|
||||
subscriber.onNext(Observable.just((TItem) null));
|
||||
} else {
|
||||
subscriber.onNext(loadingMoreConcreteObservable
|
||||
subscriber.onNext(loadingMoreObservable
|
||||
.switchMap(ignored -> Observable.<TItem>error(new NotLoadedYetException())));
|
||||
}
|
||||
subscriber.onCompleted();
|
||||
|
|
|
|||
|
|
@ -71,15 +71,18 @@ public class LoadingRenewableList<TItem, TReference, TNewerReference,
|
|||
@NonNull final NewerItemsLoader<TItem, TReference, TNewerReference, TLoadedItems> newerItemsLoader,
|
||||
final boolean renew) {
|
||||
return Observable
|
||||
.<TLoadedItems>switchOnNext(Observable.create(subscriber -> {
|
||||
if (!renew) {
|
||||
subscriber.onNext(newerItemsLoader.load(new NewerLoadRequest<>(newerReference, newerItemsCount.getValue())));
|
||||
.switchOnNext(Observable.<Observable<TLoadedItems>>create(subscriber -> {
|
||||
if (newerReference == null && isEmpty()) {
|
||||
subscriber.onNext(getLoadingMoreObservable());
|
||||
} else if (!renew) {
|
||||
subscriber.onNext(newerItemsLoader.load(new NewerLoadRequest<>(newerReference, newerItemsCount.getValue()))
|
||||
.subscribeOn(Schedulers.io()));
|
||||
} else {
|
||||
subscriber.onNext(newerItemsLoader.load(new NewerLoadRequest<>(null, LoadedItems.UNKNOWN_ITEMS_COUNT)));
|
||||
subscriber.onNext(newerItemsLoader.load(new NewerLoadRequest<>(null, LoadedItems.UNKNOWN_ITEMS_COUNT))
|
||||
.subscribeOn(Schedulers.io()));
|
||||
}
|
||||
subscriber.onCompleted();
|
||||
}))
|
||||
.subscribeOn(Schedulers.io())
|
||||
}).subscribeOn(getLoaderScheduler()))
|
||||
.single()
|
||||
.doOnError(throwable -> {
|
||||
if ((throwable instanceof IllegalArgumentException)
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ import android.support.annotation.NonNull;
|
|||
|
||||
import rx.Observable;
|
||||
|
||||
public interface MoreItemsLoader<TItem, TReference, TLoadedItems extends LoadedItems<TItem, TReference>> {
|
||||
public interface MoreItemsLoader<TItem, TMoreReference, TLoadedItems extends LoadedItems<TItem, TMoreReference>> {
|
||||
|
||||
@NonNull
|
||||
Observable<TLoadedItems> load(@NonNull final MoreLoadRequest<TReference> moreLoadRequest);
|
||||
Observable<TLoadedItems> load(@NonNull final MoreLoadRequest<TMoreReference> moreLoadRequest);
|
||||
|
||||
}
|
||||
|
|
@ -21,20 +21,20 @@ package ru.touchin.roboswag.core.observables.collections.loadable;
|
|||
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
public class MoreLoadRequest<TReference> {
|
||||
public class MoreLoadRequest<TMoreReference> {
|
||||
|
||||
@Nullable
|
||||
private final TReference reference;
|
||||
private final TMoreReference moreReference;
|
||||
private final int nextPosition;
|
||||
|
||||
public MoreLoadRequest(@Nullable final TReference reference, final int nextPosition) {
|
||||
this.reference = reference;
|
||||
public MoreLoadRequest(@Nullable final TMoreReference moreReference, final int nextPosition) {
|
||||
this.moreReference = moreReference;
|
||||
this.nextPosition = nextPosition;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public TReference getReference() {
|
||||
return reference;
|
||||
public TMoreReference getReference() {
|
||||
return moreReference;
|
||||
}
|
||||
|
||||
public int getNextPosition() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue