2016-10-23 7 views
1

Ich habe Liste der Objekte wie folgt aus:Android Realm löschen Liste der Objekte Missverständnisse

{A: 
    {B:"", 
    C:"", 
    D:[{Z:""}, 
     {Z:[{x:""}]}, 
     {Z:[{x:""},{x:""},{x:""}]}, 
     {Z:[{x:""},{x:""}]}, 
     {Z:[{x:""},{x:""},{x:""},{x:""}]} 
    ] 
    } 
} 

I Zs Objekte zur Laufzeit aktualisieren und an einer bestimmten Stelle möchte ich alle Objekte des Z entfernen und löschen ihre Daten. Früher habe ich die folgenden:

  RealmResults<A> aToEdit = realm.where(A.class).findAll(); 
      RealmList<D> dsToEdit = aToEdit.get(0).getDs(); 
      for (int i = dsToEdit.size()-1; i >= 0; i--) { 
       D d = dsToEdit.get(i); 
       RealmList<Z> z = d.getZ(); 
       z.deleteAllFromRealm(); 
      } 

UND

  RealmResults<Z> resultToDelete = realm.where(Z.class).findAll(); 
      resultToDelete.deleteAllFromRealm(); 

UND

  for (int x = 0 ; x < resultToDelete.size() ; x++){ 
       resultToDelete.get(x).deleteFromRealm(); 
      } 

UND

  realm.delete(Z.class); 

aber leider nicht von ihnen fein gearbeitet, als ich getZObjects wieder anrufen, es gibt die aktualisierten Objekte zurück nicht leer oder null.

Jeder kann helfen zu finden, was fehlt mir hier? Das Ziel ist, alle Z aus der Realm-Datenbank zu entfernen.

Antwort

1

Wenn es eine bekannte Anzahl und eine geringen Mengen an Karten über Ansätze funktionieren würden, aber wenn Sie versuchen, unbekannte Anzahl von Karten zu erzeugen, ist es besser, eine Recycler Ansicht zu verwenden

Hoffnung dieses Beispiel hilft Ihnen https://dzone.com/articles/be-lazy-productive-android-2

2

Alle von Ihnen Ansätze sollten nur funktionieren, und realm.delete(Z.class); sollte der einfachste Weg sein.

Es gibt zwei Möglichkeiten, dass es nicht so weit wie ich kann sagen funktioniert:

  1. Sie könnten in einigen Code ausführen, der die Z auf den Realm spart db wieder, versuchen Sie einen Breakpoint zu setzen, um prüfen?

  2. Der Code, in dem Sie die getZObjects() überprüfen, befindet sich nicht auf einem Looper-Thread, die Realm-Datenbank wird dort nicht automatisch aktualisiert. Versuchen Sie, den Realm auf dem Nicht-Looper-Thread zu schließen/erneut zu öffnen. Wenn es sich um einen Looper-Thread handelt, wird die Datenbank in der nächsten geraden Schleife aktualisiert.

Verwandte Themen