Pacote io.realm

Classe OrderedRealmCollectionSnapshot<E>

  • Todas as interfaces implementadas:
    io.realm.internal.Freezable<RealmCollection<E>>, io.realm.internal.ManageableObject, OrderedRealmCollection<E>, RealmCollection<E>, Iterable<E>, Collection<E>, List<E>

    public class OrderedRealmCollectionSnapshot<E>
    extends AbstractList<E>
    Um OrderedRealmCollectionSnapshot é um tipo especial de OrderedRealmCollection. Ele pode ser criado ligando para OrderedRealmCollection.createSnapshot(). Ao contrário RealmResults e RealmList, seu tamanho e ordem dos elementos nunca serão alterados após a criação.

    OrderedRealmCollectionSnapshot é útil ao fazer alterações que podem impacto o tamanho ou a ordem da collection em loops simples. Por exemplo:

     
     final RealmResults<Dog>  dogs = realm.where(Dog.class).findAll();
     final OrderedRealmCollectionSnapshot<Dog> snapshot = dogs.createSnapshot();
     final int dogsCount = snapshot.size(); // dogs.size() == snapshot.size() == 10
     realm.executeTransaction(new Realm.Transaction() {
         /@Override
         public void execute(Realm realm) {
             for (int i = 0; i < dogsCount; i++) {
             // This won't work since RealmResults is always up-to-date, its size gets decreased by 1 after every loop. An
             // IndexOutOfBoundsException will be thrown after 5 loops.
             // dogs.deleteFromRealm(i);
             snapshot.deleteFromRealm(i); // Deletion on OrderedRealmCollectionSnapshot won't change the size of it.
             }
         }
     });