使用 RxAndroid 从列表中删除对象

Remove object from list with RxAndroid

我在我的代码中使用 RxAndroidlist 中删除某些 object 但是在巨大的 list 中让我出现以下错误并且不删除任何 object:

java.lang.NumberFormatException: null

这是我的代码 RxAndroid:

public void updateListBaseSubject(String subject, String idServer) {
    Integer serverId = Integer.parseInt(idServer);
    if (shortTermCoursesModels != null && !shortTermCoursesModels.isEmpty()) {
        mCompositeDisposable.add(observableSubject(subject, serverId, shortTermCoursesModels)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(@NonNull Disposable disposable) throws Exception {
                        listenerCoursesListItemService.adapterShowLayoutTransparent();
                    }
                })
                .doFinally(new Action() {
                    @Override
                    public void run() throws Exception {
                        listenerCoursesListItemService.adapterHideLayoutTransparent();
                    }
                })
                .subscribeWith(new DisposableObserver<String>() {
                    @Override
                    public void onComplete() {
                        notifyDataSetChanged();
                    }

                    @Override
                    public void onError(Throwable e) {
                        Throwable t = new Throwable(e).fillInStackTrace();
                        FirebaseCrash.report(t);
                    }

                    @Override
                    public void onNext(String string) {
                    }
                }));
    }
}

并且:

private Observable<String> observableSubject(String subject, Integer idServer, List<GetShortTermCoursesModel> shortTermCoursesModels) {
    return Observable.defer(new Callable<ObservableSource<? extends String>>() {
        @Override
        public ObservableSource<? extends String> call() throws Exception {
            if (shortTermCoursesModels != null && !shortTermCoursesModels.isEmpty()) {
                Iterator<GetShortTermCoursesModel> lst = shortTermCoursesModels.iterator();
                while (lst.hasNext()) {
                    GetShortTermCoursesModel values = lst.next();
                    if (mCompositeDisposable.isDisposed()) return Observable.just("Stop");
                    if (idServer.compareTo(Integer.parseInt(values.getCourseCategoryId())) == 0) {
                        lst.remove();
                    }
                }
            }
            return Observable.just("Finish");
        }
    });
}

试试这个

return Observable.defer(new Callable<ObservableSource<? extends String>>() {

    @Override
    public ObservableSource<? extends String> call() throws Exception {
        if (shortTermCoursesModels != null && !shortTermCoursesModels.isEmpty()) {
            Iterator<GetShortTermCoursesModel> lst = shortTermCoursesModels.iterator();

            while (lst.hasNext()) {
                GetShortTermCoursesModel values = lst.next();

                if (mCompositeDisposable.isDisposed()) return Observable.just("Stop");

                if(values.getCourseCategoryId()!=null){

                if (idServer.compareTo(Integer.parseInt(values.getCourseCategoryId())) == 0) {
                    lst.remove();
                }
              }
            }
        }
        return Observable.just("Finish");
    }
});