ArrayList数据add时出现覆盖,及arraylist最后获取到(存储到集合中的)数据相同。

 @Override
    public ArrayList<TaskDataPackage> getData() {
        System.out.println("getData()");
        ArrayList<TaskDataPackage> dataListCount = new ArrayList<>();
        TaskDataPackageList dataPackage;
        if (groupDataList != null) {

//            if (true)//判断table 名-未完成
//            {

            ArrayList<TaskDataPackageList> dataListNo = new ArrayList<>();
            for (InspectionTask inspectionTask : groupDataList) {
                dataPackage=new TaskDataPackageList();

                dataPackage.setType(getTypeName(Integer.valueOf(inspectionTask.getInspectionMode()!=null?inspectionTask.getInspectionMode():"0")));
                dataPackage.setTitle(inspectionTask.getTaskName());
                dataPackage.setTime(inspectionTask.getTaskEndTime());
                dataPackage.setProgress("3/6");
                dataPackage.setMen("张三");
                dataListNo.add(dataPackage);
//                dataPackage.setProgress(inspectionTask.getChildren().get().getExamObjectCount() + "/" + scc.getTotalObjectCount());
            }
            TaskDataPackage taskDataPackageNo = new TaskDataPackage();
            taskDataPackageNo.setCount(groupDataList.size());
            taskDataPackageNo.setTaskDataPackageList(dataListNo);
            dataListCount.add(taskDataPackageNo);



//            } else if(true){//已完成
            ArrayList<TaskDataPackageList> dataListHas = new ArrayList<>();
            for (InspectionTask inspectionTask : groupDataList) {
                dataPackage=new TaskDataPackageList();

                dataPackage.setType(getTypeName(Integer.valueOf(inspectionTask.getInspectionMode()!=null?inspectionTask.getInspectionMode():"0")));
                dataPackage.setTitle(inspectionTask.getTaskName());
                dataPackage.setTime(inspectionTask.getTaskEndTime());
                dataPackage.setProgress("3/6");
                dataPackage.setMen("李四");
                dataListHas.add(dataPackage);
//                dataPackage.setProgress(inspectionTask.getChildren().get().getExamObjectCount() + "/" + scc.getTotalObjectCount());
            }
            TaskDataPackage taskDataPackageHas = new TaskDataPackage();

            taskDataPackageHas.setCount(groupDataList.size());
            taskDataPackageHas.setTaskDataPackageList(dataListHas);
            dataListCount.add(taskDataPackageHas);

//            }else {//已过期
            ArrayList<TaskDataPackageList> dataListExp = new ArrayList<>();
            for (InspectionTask inspectionTask : groupDataList) {
                dataPackage=new TaskDataPackageList();
                dataPackage.setType(getTypeName(Integer.valueOf(inspectionTask.getInspectionMode()!=null?inspectionTask.getInspectionMode():"0")));
                dataPackage.setTitle(inspectionTask.getTaskName());
                dataPackage.setTime(inspectionTask.getTaskEndTime());
                dataPackage.setProgress("3/6");
                dataPackage.setMen("赵六");
                dataListExp.add(dataPackage);
//                dataPackage.setProgress(inspectionTask.getChildren().get().getExamObjectCount() + "/" + scc.getTotalObjectCount());
            }
            TaskDataPackage taskDataPackageExp = new TaskDataPackage();

            taskDataPackageExp.setCount(groupDataList.size());
            taskDataPackageExp.setTaskDataPackageList(dataListExp);
            dataListCount.add(taskDataPackageExp);
//            }

        }
        return dataListCount;

    }

解决办法:ArraylistView :add方法中 数据,,都要重新new 一个。。确保 。add的内容所指向的地址,,部分之前add的数据 指向相同的地址。
原因: add 中的数据 所指向的地址 ,是同一个地址。即后面每次设置 的数据 都会覆盖之前的数据。。所以 最后获取的 arraylist的数据全都一样。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值