データベースからいくつかのアイテムを削除したときに、レルムの通知を聞こうとしています。だから私はこのコードを試した:レルム削除リスナー
realm.where(Book.class).findAllAsync().addChangeListener(new RealmChangeListener<RealmResults<Book>>() {
@Override
public void onChange(RealmResults<Book> element) {
// nothing changed here
Log.d(TAG, "onChange: size = "+element.size());
}
});
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Book book = realm.where(Book.class).equalTo("id", 45).findFirst();
book.deleteFromRealm();
}
});
しかし、リスナーは決して誘発した。ユーザーが削除したアイテムを決める必要があるので、RecyclerView
から削除することができます。これを修正する方法はありますか?あなたは、フィールドの参照として結果
private RealmResults<Book> books;
public void someMethod() {
books = realm.where(Book.class).findAllAsync();
books.addChangeListener(new RealmChangeListener<RealmResults<Book>>() {
@Override
public void onChange(RealmResults<Book> element) {
// nothing changed here
Log.d(TAG, "onChange: size = "+element.size());
}
});
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Book book = realm.where(Book.class).equalTo("id", 45).findFirst();
book.deleteFromRealm();
}
});
}
を使用しかし、私はまた、別の活動の変化を聞く必要があります。この手法を使用すると、現在のアクティビティにのみ影響します。どのアイテムがユーザーによって削除されたのかを判断する必要があるので、それらを「RecyclerView」から削除することができます。レルムは削除通知をサポートしていますか? –
しかし、一度に1つのアクティビティだけを前面に表示することはできますか?他のアクティビティでも同じこと(フィールド参照とクエリ)を実行できます。 – EpicPandaForce