【问题标题】:Only Inserted the latest row on listview into sqlite仅将 listview 上的最新行插入 sqlite
【发布时间】:2014-01-23 22:29:28
【问题描述】:

我是初学者 android 开发人员。我需要你的帮助。我想将我的订单插入到 2 个 sqlite、tblorder 和 orderdtl 表中。 orderdtl 从列表视图的多个项目中插入。当我试图保存所有。只有最后一行被插入到 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);
        }
     });

【问题讨论】:

    标签: android sqlite listview


    【解决方案1】:

    我假设 'mylist' 是 Hashmap 的 ArrayList。第一个问题是这一行:

    Globals.mylist.set(i, map1);
    

    这会将索引“i”处的元素替换为 map1 持有的任何内容。因此 map1 在您的循环中永远不会改变,您从中获得的值 'Id' 和 'qty' 也不会改变。如果您的意图是从 ArrayList 中获取 HashMap,则应该是:

    map1 = Globals.mylist.get(i);
    

    第二个问题是:

    Globals.mylist.remove(i);
    

    您正在删除该条目,同时还循环遍历它所在的列表。当您执行删除时,ArrayList 索引会更改。假设您有 3 件商品:

    • 索引 0:项目 1
    • 索引 1:项目 2
    • 索引 2:第 3 项

    循环的第一次迭代有 i = 0。当你删除索引 0 时,列表变为:

    • 索引 0:第 2 项
    • 索引 1:第 3 项

    在循环的下一次迭代中,i = 1。当您删除索引 1 时,列表为:

    • 索引 0:第 2 项

    此时,列表的大小为 1。然后循环停止,因为 'i

    Globals.mylist.clear();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多