插入多行领域android

时间:2017-04-12 23:10:49

标签: java android database realm

你好我一直试图使用arraylists中的值向我的realm数据库中插入多行,每当我尝试通过for循环插入时它只添加最后一行,如果你需要别的东西(code,xml)请告诉我

这是我的代码:

 realm.executeTransactionAsync(new Realm.Transaction() { //ASYNCHRONOUS TRANSACCION TO EXECUTE THE QUERY ON A DIFFERENT THREAD
                        @Override
                        public void execute(Realm bgRealm) {
                            // increment index
                            Invoices inv = bgRealm.createObject(Invoices.class, RealmController.autoincrement(bgRealm, Invoices.class)); //METHOD THAT GIVES US THE AUTONINCREMENTE FUNCTION
                            //inv.id = nextId;                                                                                           //THE 2ND PARAMETER IN CREATE OBJECTE DEFINES THE PK
                            //...
                            //realm.insertOrUpdate(user); // using insert API


                            inv.number = n;
                            inv.serial = s;
                            inv.client = c;
                            inv.subtotal = sub;
                            inv.tax = tax;
                            inv.total = tot;

                            Invoice_lines invl = bgRealm.createObject(Invoice_lines.class, RealmController.autoincrement(bgRealm, Invoice_lines.class));//ID FROM ANOHTER TABLE (ROW)

                            for(int i=0; i<price.size(); i++) {
                                invl.description = description.get(i);
                                invl.price = price.get(i);
                                invl.quantity = quantity.get(i);
                                invl.invoice = inv;
                                bgRealm.insert(invl);
                            }

                        }
                    }

2 个答案:

答案 0 :(得分:2)

我不确定。您只能在此行中创建一个领域对象:

Invoice_lines invl = bgRealm.createObject(Invoice_lines.class, RealmController.autoincrement(bgRealm, Invoice_lines.class));//ID FROM ANOHTER TABLE (ROW)

在循环中,您可以更改invl个字段,但不要插入新对象。

尝试在循环内创建对象。

答案 1 :(得分:0)

因为你想做的是

            Invoice_lines invl = new Invoice_lines(); // unmanaged object
            for(int i = 0; i < price.size(); i++) {
                inv1.setId(RealmController.autoincrement(bgRealm, Invoice_lines.class));//ID FROM ANOHTER TABLE (ROW)
                invl.description = description.get(i);
                invl.price = price.get(i);
                invl.quantity = quantity.get(i);
                invl.invoice = inv;
                bgRealm.insert(invl);
            }