我目前正在使用Realm 3.0.0更新。我希望功能能够检测现有频道列表中的所有删除,插入和修改。因此,我正在使用OrderedRealmCollectionChangeListener监听器和我的RealmResult,如下所示:
final RealmResults<Channel> persistedChannels = realmRepository.getPersistedChannels();
persistedChannels.addChangeListener(new OrderedRealmCollectionChangeListener<RealmResults<Channel>>() {
@Override
public void onChange(RealmResults<Channel> collection, OrderedCollectionChangeSet changeSet) {
OrderedCollectionChangeSet.Range[] deletions = changeSet.getDeletionRanges();
for (int i = deletions.length - 1; i >= 0; i--) {
OrderedCollectionChangeSet.Range range = deletions[i];
Log.d(TAG, "onDelete() called with: range startIndex = [" + range.startIndex + "]");
Log.d(TAG, "onDelete() called with: range length = [" + range.length + "]");
for (int j = range.startIndex; j < (range.startIndex + range.length); j++) {
Log.d(TAG, "onChange() called with: collection " +
"= [" + collection.get(j).getChannelName() + "]");
}
}
OrderedCollectionChangeSet.Range[] insertions = changeSet.getInsertionRanges();
for (OrderedCollectionChangeSet.Range range : insertions) {
}
OrderedCollectionChangeSet.Range[] modifications = changeSet.getChangeRanges();
for (OrderedCollectionChangeSet.Range range : modifications) {
}
}
});
我从link
找到了上述参考资料问题是我最初有5条记录,所以持久化的频道领域结果是在插入范围内为我提供起始索引5和长度为0。但是当我删除最后一个条目时,在删除时,集合大小为我提供了4并导致indexoutofbound异常。
我认为我的初始RealmResult存储在collection或persistedchannels数组中的某个位置,但是在删除之后它们的大小都是4并且我无法找到我必须执行某些操作的已删除条目。
请问任何人可以解释返回的集合集和OrderedRealmCollectionChangeListener在这里发生了什么,让我指导正确的路径吗?
由于