Search in sources :

Example 1 with RxBus

use of com.morihacky.android.rxjava.rxbus.RxBus in project RxJava-Android-Samples by kaushikgopal.

the class PaginationFragment method onStart.

@Override
public void onStart() {
    super.onStart();
    _disposables = new CompositeDisposable();
    Disposable d2 = _paginator.onBackpressureDrop().concatMap(nextPage -> _itemsFromNetworkCall(nextPage + 1, 10)).observeOn(AndroidSchedulers.mainThread()).map(items -> {
        int start = _adapter.getItemCount() - 1;
        _adapter.addItems(items);
        _adapter.notifyItemRangeInserted(start, 10);
        _progressBar.setVisibility(View.INVISIBLE);
        return items;
    }).subscribe();
    // I'm using an Rxbus purely to hear from a nested button click
    // we don't really need Rx for this part. it's just easy ¯\_(ツ)_/¯
    Disposable d1 = _bus.asFlowable().subscribe(event -> {
        if (event instanceof PaginationAdapter.ItemBtnViewHolder.PageEvent) {
            int nextPage = _adapter.getItemCount() - 1;
            _paginator.onNext(nextPage);
        }
    });
    _disposables.add(d1);
    _disposables.add(d2);
}
Also used : CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) Bundle(android.os.Bundle) ProgressBar(android.widget.ProgressBar) ButterKnife(butterknife.ButterKnife) RxBus(com.morihacky.android.rxjava.rxbus.RxBus) LayoutInflater(android.view.LayoutInflater) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) MainActivity(com.morihacky.android.rxjava.MainActivity) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) ViewGroup(android.view.ViewGroup) BindView(butterknife.BindView) R(com.morihacky.android.rxjava.R) ArrayList(java.util.ArrayList) TimeUnit(java.util.concurrent.TimeUnit) RecyclerView(android.support.v7.widget.RecyclerView) BaseFragment(com.morihacky.android.rxjava.fragments.BaseFragment) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) List(java.util.List) Flowable(io.reactivex.Flowable) View(android.view.View) Nullable(android.support.annotation.Nullable) PublishProcessor(io.reactivex.processors.PublishProcessor) CompositeDisposable(io.reactivex.disposables.CompositeDisposable)

Example 2 with RxBus

use of com.morihacky.android.rxjava.rxbus.RxBus in project RxJava-Android-Samples by kaushikgopal.

the class PaginationAutoFragment method onStart.

@Override
public void onStart() {
    super.onStart();
    _disposables = new CompositeDisposable();
    Disposable d2 = _paginator.onBackpressureDrop().doOnNext(i -> {
        _requestUnderWay = true;
        _progressBar.setVisibility(View.VISIBLE);
    }).concatMap(this::_itemsFromNetworkCall).observeOn(AndroidSchedulers.mainThread()).map(items -> {
        _adapter.addItems(items);
        _adapter.notifyDataSetChanged();
        return items;
    }).doOnNext(i -> {
        _requestUnderWay = false;
        _progressBar.setVisibility(View.INVISIBLE);
    }).subscribe();
    // I'm using an RxBus purely to hear from a nested button click
    // we don't really need Rx for this part. it's just easy ¯\_(ツ)_/¯
    Disposable d1 = _bus.asFlowable().filter(o -> !_requestUnderWay).subscribe(event -> {
        if (event instanceof PaginationAutoAdapter.PageEvent) {
            int nextPage = _adapter.getItemCount();
            _paginator.onNext(nextPage);
        }
    });
    _disposables.add(d1);
    _disposables.add(d2);
    _paginator.onNext(0);
}
Also used : CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) Bundle(android.os.Bundle) ProgressBar(android.widget.ProgressBar) ButterKnife(butterknife.ButterKnife) RxBus(com.morihacky.android.rxjava.rxbus.RxBus) LayoutInflater(android.view.LayoutInflater) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) MainActivity(com.morihacky.android.rxjava.MainActivity) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) ViewGroup(android.view.ViewGroup) BindView(butterknife.BindView) R(com.morihacky.android.rxjava.R) ArrayList(java.util.ArrayList) TimeUnit(java.util.concurrent.TimeUnit) RecyclerView(android.support.v7.widget.RecyclerView) BaseFragment(com.morihacky.android.rxjava.fragments.BaseFragment) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) List(java.util.List) Flowable(io.reactivex.Flowable) View(android.view.View) Nullable(android.support.annotation.Nullable) PublishProcessor(io.reactivex.processors.PublishProcessor) CompositeDisposable(io.reactivex.disposables.CompositeDisposable)

Aggregations

Bundle (android.os.Bundle)2 Nullable (android.support.annotation.Nullable)2 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)2 RecyclerView (android.support.v7.widget.RecyclerView)2 LayoutInflater (android.view.LayoutInflater)2 View (android.view.View)2 ViewGroup (android.view.ViewGroup)2 ProgressBar (android.widget.ProgressBar)2 BindView (butterknife.BindView)2 ButterKnife (butterknife.ButterKnife)2 MainActivity (com.morihacky.android.rxjava.MainActivity)2 R (com.morihacky.android.rxjava.R)2 BaseFragment (com.morihacky.android.rxjava.fragments.BaseFragment)2 RxBus (com.morihacky.android.rxjava.rxbus.RxBus)2 Flowable (io.reactivex.Flowable)2 AndroidSchedulers (io.reactivex.android.schedulers.AndroidSchedulers)2 CompositeDisposable (io.reactivex.disposables.CompositeDisposable)2 Disposable (io.reactivex.disposables.Disposable)2 PublishProcessor (io.reactivex.processors.PublishProcessor)2 ArrayList (java.util.ArrayList)2