有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java onNext为ArrayList的每个元素触发,而不是使用RXJava触发一次

我有一个类型为ObjectArrayList,我正在使用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) 个答案

  1. # 1 楼答案

    如果您想在发出最后一项时执行一些操作,那么应该实现onComplete()。为每个发出的新项调用onNext()