我是初学Android开发者。我需要你的帮助。我想将我的订单插入2个sqlite,tblorder和orderdtl表中。 orderdtl从listview的多个项目中插入。当我试图保存所有。只有最后一行已经插入到orderdtl中,其他表没有问题。任何人都可以解决这个问题吗?这是我的代码
btnsaveto.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
String orderid=orderid();
String orderdate=orderdate();
String notes = edtnotes.getText().toString();
long outletid = Globals.outletid;
order = dataSource.createorder(orderid, orderdate, notes, outletid);
for(int i=0; i< Globals.mylist.size() ;i++){
Globals.mylist.set(i, map1);
map1.get(Id);
map1.get(qty);
orderdtl = dataSource.createorderdtl(orderid, Id, qty);
Globals.mylist.remove(i);
Toast.makeText(EntryTO.this, "masuk Order \n" +
"ID :" + order.getorderid() +"\n" +
"DATE:" + order.getorderdate() +"\n" +
"NOTES :" + order.getnotes() +"\n" +
"OUTLET ID" + order.getoutletid() +"\n" +
"ID :" + orderdtl.getorderid() +"\n" +
"ID PRODUK :" + orderdtl.getId() +"\n" +
"QTY :" +orderdtl.getqty(),Toast.LENGTH_LONG).show();
}
//Intent i3 = new Intent(EntryTO.this, ViewOrder.class);
//startActivity(i3);
}
});
答案 0 :(得分:0)
我认为'mylist'是Hashmap的ArrayList。第一个问题是这一行:
Globals.mylist.set(i, map1);
用index1保存的索引替换索引'i'的元素。因此map1永远不会在你的循环中改变,你从它得到的值'Id'和'qty'也不会改变。如果您打算从ArrayList获取HashMap,那么它将是:
map1 = Globals.mylist.get(i);
第二个问题是:
Globals.mylist.remove(i);
您正在删除条目,同时也循环遍历它所在的列表。当您执行删除操作时,ArrayList索引会更改。假设您有3个项目:
循环的第一次迭代有i = 0.当你删除索引0时,列表变为:
在循环的下一次迭代中,i = 1.当你删除索引1时,列表就是:
此时,列表的大小为1.然后循环停止,因为'i&lt; Globals.mylist.size()'不再是真的。为避免此问题,您应避免在迭代时删除或添加集合。这里的解决方案是在循环完成后简单地清除集合:
Globals.mylist.clear();