onNext срабатывает для каждого элемента ArrayList вместо однократного запуска с использованием RXJava - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть ArrayList типа Object, который я слушаю, используя шаблон Observable:

//Instances 
private List<Store> storeList = new ArrayList<>();
private static PublishSubject<List<Store>> publishStoreListSubject = PublishSubject.create();

private Observer<List<Store>> storeListObserver = new Observer<List<Store>>() {
        @Override
        public void onSubscribe(Disposable d) { }

    @Override
    public void onNext(List<Store> storeList) {
        //Do work ....
    }

    @Override
    public void onError(Throwable e) { }

    @Override
    public void onComplete() { }
};

в моем методе onCreate :

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        publishStoreListSubject.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread()).subscribe(storeListObserver);

}

В моем методе на стороне клиента у меня есть следующее:

onRetrieveStores() {
  publishStoreListSubject.onNext(storeList);
  ..
  ..
  ..
}

ПРОБЛЕМА: Вместо этого onNext вызывается для каждого элементадля всего storeList как одна единица.Например: если у меня 4 магазина, onNext срабатывает 4 раза.

Кстати, у меня нет никаких механизмов, которые работают в моем onRetrieveStores

1 Ответ

0 голосов
/ 17 декабря 2018

Если вы хотите выполнить какое-либо действие, когда последний элемент был выпущен, вам следует реализовать onComplete ().onNext () вызывается для каждого нового отправляемого элемента.

...