如何确定使用基本领域适配器侦听器方法在RealmObject更新时更改了哪些字段?
需要同时拥有范围信息和更改的实体字段信息。
fun notifyRecyclerViewOfChanges(changeSet: ChangeSet?) {
// ?
}发布于 2018-06-05 10:22:49
您可以参考官方的realm-android-adapters来了解如何将其组合在一起:
private OrderedRealmCollectionChangeListener createListener() {
return new OrderedRealmCollectionChangeListener() {
@Override
public void onChange(Object collection, OrderedCollectionChangeSet changeSet) {
if (changeSet.getState() == OrderedCollectionChangeSet.State.INITIAL) { // before Realm 5.0, this is `changeSet == null`
notifyDataSetChanged();
return;
}
// For deletions, the adapter has to be notified in reverse order.
OrderedCollectionChangeSet.Range[] deletions = changeSet.getDeletionRanges();
for (int i = deletions.length - 1; i >= 0; i--) {
OrderedCollectionChangeSet.Range range = deletions[i];
notifyItemRangeRemoved(range.startIndex, range.length);
}
OrderedCollectionChangeSet.Range[] insertions = changeSet.getInsertionRanges();
for (OrderedCollectionChangeSet.Range range : insertions) {
notifyItemRangeInserted(range.startIndex, range.length);
}
if (!updateOnModification) {
return;
}
OrderedCollectionChangeSet.Range[] modifications = changeSet.getChangeRanges();
for (OrderedCollectionChangeSet.Range range : modifications) {
notifyItemRangeChanged(range.startIndex, range.length);
}
}
};
}如果您需要字段级的更改,那么RealmObject需要使用RealmObjectChangeListener拥有自己的变更侦听器,而updateOnModification应该是假的(因为您希望在视图持有者本身中处理它)。
https://stackoverflow.com/questions/50697595
复制相似问题