RealmList с Android - PullRequest
       36

RealmList с Android

0 голосов
/ 16 октября 2019

Элементы при вставке

Элементы при извлечении

Итак, вот в чем дело:

У меня есть объектный продукткоторый расширяет RealmObject. Внутри объекта Product есть атрибут: RealmList. Пакет также расширяет RealmObject.

Внутри Bundle Object есть атрибут: RealmList. ProductBundle расширяет RealmObject.

Теперь все эти списки не являются ни пустыми, ни нулевыми к моменту их вставки.

После вставки, если я запрашиваю у Realm список продуктов, я получу список, содержащий список RealmList. Однако внутри каждого из элементов Bundle productBundles RealmList всегда пуст.

class Product extends RealmObject{
   RealmList<Bundle> bundles= new RealmList<Bundle>();
   boolean isLocallyAddedToCart;
}

class Bundle extends RealmObject{
  RealmList<ProductBundle> productsBundles = new RealmList<ProductBundle>();
}

class ProductBundle extends RealmObject{
  String title;
}

Есть ли какие-либо мысли по этому поводу?

Запрос:

RealmResults<Product> cartItem = realm.where(Product.class).equalTo("isLocallyAddedToCart", true).findAll();

Вставка:

public void insertAddToCart(@NonNull ArrayList<Product> items) {
    try {
        Realm realm = getRealmInstance();
        realm.beginTransaction();
        realm.insertOrUpdate(items);
        realm.commitTransaction();
        realm.close();
    } catch (Exception ex) {
        ex.getStackTrace();
    }
}

Обработка объектов:

RealmList<BundleProductOption> bundleProductOptions = new RealmList<>();
 private SparseArray<List<ProductBundle>> optionsFinalSelection = new SparseArray<>();
BundleProductOption bundleProduct = new BundleProductOption();                 

bundleProduct.setDefaultTitle(bundleProductOption.getDefaultTitle());

bundleProduct.setOptionId(bundleProductOption.getOptionId());  

bundleProduct.setParentId(bundleProductOption.getParentId());                          
bundleProduct.setRequired(bundleProductOption.getRequired());
bundleProduct.setType(bundleProductOption.getType());
RealmList<ProductBundle> productBundles = new RealmList<>();
productBundles.addAll(optionsFinalSelection.get(i));
bundleProduct.setProductsBundle(productBundles);
product.setSelectedOptions(bundleProductOptions);

1 Ответ

1 голос
/ 21 октября 2019

вы должны управлять вставкой с ID в качестве первичного ключа в каждой модели. когда вы вставляете или обновляете, вы должны использовать первичный ключ для сохранения всех состояний ваших данных, а затем вы не можете их использовать, но на самом деле они нужны для организации вставки или обновления.

держите меня в курсе вашихвыпуск.

...