Сфера Android удаляет список объектов непонимания

#android #realm

#Android #realm

Вопрос:

У меня есть список объектов, подобных следующему:

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

Я обновляю объекты Z во время выполнения, и в определенном месте я хочу удалить все объекты Z и удалить его данные. Я использовал следующее:

             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();
            }
  

И

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

И

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

И

             realm.delete(Z.class);
  

Но, к сожалению, ни один из них не работал нормально, когда я снова вызываю getZObjects, он возвращает обновленные объекты, а не пустые или нулевые.

Любой может помочь найти, чего мне здесь не хватает? Цель состоит в том, чтобы удалить все Z из базы данных Realm.

Ответ №1:

Все ваши подходы должны просто работать, и realm.delete(Z.class); это должен быть самый простой способ.

Есть две возможности, что это не работает, насколько я могу судить:

  1. Возможно, вы столкнулись с каким-то кодом, который снова сохраняет Z в Realm db, попробуйте установить точку останова для проверки?

  2. Код, в котором вы проверяете getZObjects() , не находится в циклическом потоке, база данных Realm db там автоматически обновляться не будет. Попробуйте закрыть / повторно открыть область в потоке без цикла. Если он находится в циклическом потоке, база данных будет обновлена в следующем четном цикле.

Ответ №2:

при известном количестве и небольшом количестве карточек вышеуказанные подходы будут работать, но если вы пытаетесь сгенерировать неизвестное количество карточек, лучше использовать представление recycler

Надеюсь, этот пример поможет вам https://dzone.com/articles/be-lazy-productive-android-2