使用 RxAndroid 从列表中删除对象
Remove object from list with RxAndroid
我在我的代码中使用 RxAndroid
从 list
中删除某些 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");
}
});
我在我的代码中使用 RxAndroid
从 list
中删除某些 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");
}
});