Add this in your build.gradle
compile 'com.amitshekhar.android:android-networking:1.0.2'
When using it with RxJava2
compile 'com.amitshekhar.android:rx2-android-networking:1.0.2'
public class PaginationActivity extends AppCompatActivity { | |
// removed for brevity.. | |
private PublishProcessor<Integer> paginator = PublishProcessor.create(); | |
private ProgressBar progressBar; | |
private boolean loading = false; | |
private int pageNumber = 1; | |
private final int VISIBLE_THRESHOLD = 1; | |
private int lastVisibleItem, totalItemCount; |
package com.mindorks.snaphelperexample.ui.common; | |
import android.support.annotation.NonNull; | |
import android.support.annotation.Nullable; | |
import android.support.v7.widget.LinearLayoutManager; | |
import android.support.v7.widget.LinearSnapHelper; | |
import android.support.v7.widget.OrientationHelper; | |
import android.support.v7.widget.RecyclerView; | |
import android.view.View; |
public class PaginationActivity extends AppCompatActivity { | |
/** | |
* Simulation of network data | |
*/ | |
private Single<List<String>> dataFromNetwork(final int page) { | |
return Single.just(true) | |
.delay(2, TimeUnit.SECONDS) | |
.map(value -> { | |
List<String> items = new ArrayList<>(); | |
for (int i = 1; i <= 10; i++) { |
public class PaginationAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | |
List<String> items = new ArrayList<>(); | |
public PaginationAdapter() { | |
} | |
void addItems(List<String> items) { | |
this.items.addAll(items); |
/* | |
* Singleton class for default executor supplier | |
*/ | |
public class DefaultExecutorSupplier{ | |
/* | |
* Number of cores to decide the number of threads | |
*/ | |
public static final int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors(); | |
/* |
getUserObservable() | |
.flatMap(new Function<ApiUser, ObservableSource<UserDetail>>() { | |
@Override | |
public ObservableSource<UserDetail> apply(ApiUser apiUser) throws Exception { | |
return getUserDetailObservable(apiUser); | |
} | |
}) | |
.subscribeOn(Schedulers.io()) | |
.observeOn(AndroidSchedulers.mainThread()) | |
.subscribe(getObserver()); |
getUserObservable() | |
.map(new Function<ApiUser, User>() { | |
@Override | |
public User apply(ApiUser apiUser) throws Exception { | |
// here we get the ApiUser from the server | |
User user = new User(apiUser); | |
// then by converting it into the user, we are returning | |
return user; | |
} | |
}) |