首页 > 解决方案 > 在 Realm `addchangelistener` 中知道元素在哪个位置被插入/更新/删除?

问题描述

在 Realmaddchangelistener中,我们可以知道哪个position列表发生了变化,元素是否inserted/updated/removed从列表中获取?

标签: androidrealm

解决方案


我们能知道哪个位置列表发生了变化

是的

private RealmResults<Obj> results;

private OrderedRealmCollectionChangeListener<RealmResults<Obj>> changeListener = new OrderedRealmCollectionChangeListener<RealmResults<Obj>>() {
    @Override
    public void onChange(RealmResults<Obj> results, OrderedCollectionChangeSet changeSet) {
        String insertions = changeSet.getInsertions().length == 0 ? "" : "\n - Insertions: " + Arrays.toString(changeSet.getInsertions());
        String deletions = changeSet.getDeletions().length == 0 ? "" : "\n - Deletions: " + Arrays.toString(changeSet.getDeletions());
        String changes = changeSet.getChanges().length == 0 ? "" : "\n - Changes: " + Arrays.toString(changeSet.getChanges());
        showStatus("Obj was loaded, or written to. " + insertions + deletions + changes);
    }
};


public void ...() {
    results = realm.where(Obj.class)...findAllAsync();
    results.addChangeListener(changeListener);

推荐阅读