【问题标题】:observableList doesn't show rows in a loop for?observableList 不会在循环中显示行吗?
【发布时间】:2019-01-27 10:26:19
【问题描述】:

我有一个问题,我要花几天时间在循环中显示 observablelist 中的行!然而,代码在控制台中的功能非常好!欢迎任何帮助。

 private void showActivitiesDriver() throws IOException {
            Path path = Paths.get("Download/Cards/F__100000015956101711071539.C1B");
            byte[] data = Files.readAllBytes(path);
            dataFileCard = new FileBlockTGD(data);
            w = new WrapperActivityChangeInfo(dataFileCard.getDriver_activity_data()
                    .getActivityDailyRecords().get(i), dataFileCard.getDriver_activity_data()
                    .getActivityDailyRecords().get(i).getActivityChangeInfo().get(j));

            for (i = 0; i < dataFileCard.getDriver_activity_data().getActivityDailyRecords().size(); i++) {

                w.setTheDateTime(dataFileCard.getDriver_activity_data()
                        .getActivityDailyRecords().get(i).getActivityRecordDate().toString());

                System.out.println(w.getTheDateTime());

                dateActivitiesColumn.setCellValueFactory(cellData -> new SimpleStringProperty(
                        cellData.getValue().getTheDateTime()));

                /*
                dateActivitiesColumn.setCellValueFactory(cellData -> new ReadOnlyStringWrapper(
                        DateUtil.parseDateToString(cellData.getValue().getActivityRecordDate())));
                */       

                for (j = 0; j < dataFileCard.getDriver_activity_data().getActivityDailyRecords().get(i).
                        getActivityChangeInfo().size(); j++) {

                    driverActivitiesColumn.setCellValueFactory(cellData -> new SimpleStringProperty(
                            cellData.getValue().getTheActivity()));

                    WrapperActivityChangeInfoList = FXCollections.observableArrayList();

                    WrapperActivityChangeInfoList.add(new WrapperActivityChangeInfo(dataFileCard.getDriver_activity_data()
                            .getActivityDailyRecords().get(i), dataFileCard.getDriver_activity_data()
                            .getActivityDailyRecords().get(i).getActivityChangeInfo().get(j)));
                    System.out.println(WrapperActivityChangeInfoList);
                }

            }
            // Set data to tableview
            activitiesDriverTableView.setItems(WrapperActivityChangeInfoList);
            //System.out.println(WrapperActivityChangeInfoList.toString());
        }
    }

我希望看到所有行,但只有一个,但代码在控制台中运行良好。

【问题讨论】:

    标签: javafx observablelist


    【解决方案1】:

    您在内循环的每次迭代中创建一个新的ObservableList(最初为空)。这样,在add 调用之后,您将获得一个包含单个列表的列表。最后将其中一个列表分配给TableView。应该会在输出中看到一系列日期后跟多个WrapperActivityChangeInfo.toString 结果[] 包围,表明您正在打印多个列表。

    此外,在循环的每次迭代中分配 cellValueFactory 是没有意义的。

    您需要将列表创建移到循环之外。:

    ...
    
    WrapperActivityChangeInfoList = FXCollections.observableArrayList();
    
    driverActivitiesColumn.setCellValueFactory(cellData -> new SimpleStringProperty(
                    cellData.getValue().getTheActivity()));
    
    for (i = 0; i < dataFileCard.getDriver_activity_data().getActivityDailyRecords().size(); i++) {
    
        ...       
    
        for (j = 0; j < dataFileCard.getDriver_activity_data().getActivityDailyRecords().get(i).
                getActivityChangeInfo().size(); j++) {
    
            WrapperActivityChangeInfoList.add(new WrapperActivityChangeInfo(dataFileCard.getDriver_activity_data()
                    .getActivityDailyRecords().get(i), dataFileCard.getDriver_activity_data()
                    .getActivityDailyRecords().get(i).getActivityChangeInfo().get(j)));
            System.out.println(WrapperActivityChangeInfoList);
        }
    
    }
    activitiesDriverTableView.setItems(WrapperActivityChangeInfoList);
    

    【讨论】:

    • 非常感谢,在代码上停留的时间太长,新的眼光总是资本。它按我的意愿工作。
    • @geh - 如果此答案解决了您的问题,请点击顶部的复选标记接受。接受答案是对那些为您的解决方案努力工作的人的功劳,也有助于未来可能遇到类似问题的读者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多