【发布时间】:2016-05-05 20:24:29
【问题描述】:
我实现了一个回收器视图,该视图使用 rx-java 从领域数据库中获取其数据集。当我从数据集中删除项目然后调用获取所有项目时,我会收到剩余的项目以及我刚刚删除但无效的项目。
Observable.defer(list -> {
boolean isDeleted = true;
for (int i = 0; i < list.size(); i++)
isDeleted = isDeleted && evictById(list.get(i));
return Observable.just(isDeleted);
}).subscribe(new Subscriber{
@Override
public void onCompleted() { }
@Override
public void onError(Throwable e) { }
@Override
public void onNext(Boolean success) {
if (success)
getUserList();
}
});
boolean evictById(final int itemId){
mRealm = Realm.getDefaultInstance();
RealmModel toDelete = mRealm.where(UserRealmModel.class).equalTo("userId", itemId).findFirst();
if (toDelete != null) {
mRealm.beginTransaction();
RealmObject.deleteFromRealm(toDelete);
mRealm.commitTransaction();
return !RealmObject.isValid(toDelete);
} else return false;
}
public void getUserList(){
Observable.from(Realm.getDefaultInstance().where(UserRealmModel.class).findAll())
.subscribe(new Subscriber<List<UserRealmModel>> {
@Override
public void onCompleted() {
hideViewLoading();
}
@Override
public void onError(Throwable e) {}
@Override
public void onNext(List<UserViewModel> users) {
showUsersCollectionInView(users);
});
}
例如数据集有 10 个项目,我删除了其中的 3 个。在 getUserList 响应中,我收到 10 个项目的列表,其中 7 个有效项目和 3 个无效项目。 我还确保使用领域浏览器删除了这些项目! 有人可以解释为什么会这样吗?
【问题讨论】:
-
这听起来像是为了支持迭代器而进行的 0.89.0 重大更改的副作用。
-
也许,我用的是 0.90.0