Как отфильтровать и показать в VBox - PullRequest
0 голосов
/ 23 февраля 2019

Может кто-нибудь предложить, как я могу сделать это, чтобы показать динамический шаблон в VBox.Ниже приведен мой код, и я хотел бы заключить отсортированный список в SearchVBox, чтобы он мог показывать динамический шаблон, который ищут пользователи.В самом низу я привел пример того, что мне нужно сделать.

public class UserSearchController implements Initializable {

    @FXML
    private TextField filterField;   
    @FXML
    private VBox SearchVbox;

    private static final String productFilePath = "C:\\Users\\Cre8\\Desktop\\APU prgram\\APU sem3\\OODJ\\Product.txt";
    List<CSVproduct> csvProducts = new ArrayList<>();
    ObservableList<CSVproduct> data = FXCollections.observableArrayList(csvProducts);
    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        try {
            addUserSearchNewPane();
        } catch (IOException ex) {
            Logger.getLogger(ViewProduct.class.getName()).log(Level.SEVERE, null, ex);
        }
    }    

    void addUserSearchNewPane() throws IOException{
        Reader reader = Files.newBufferedReader(Paths.get(productFilePath));
        CsvToBean<CSVproduct> csvToBean = new CsvToBeanBuilder(reader)
                .withType(CSVproduct.class)
                .withIgnoreLeadingWhiteSpace(true)
                .build();
        csvProducts = csvToBean.parse();
        for (CSVproduct csvproduct : csvProducts) {
        UserSearchTemplateController usersearchTC = new UserSearchTemplateController();
        System.out.println(csvproduct.getProductName());
        usersearchTC.setSearchName(csvproduct.getProductName());
        usersearchTC.setSearchPrice(csvproduct.getProductPrice());
        usersearchTC.setSearchQuantity(csvproduct.getProductQuantity());
        usersearchTC.setSearchRate(csvproduct.getProductRate());
        usersearchTC.setSearchDescription(csvproduct.getProductDescription());
        usersearchTC.setSearchImage(csvproduct.getProductImage());
        this.SearchVbox.getChildren().add(usersearchTC);
        }
    }
    void UserFilterFunction(){
        FilteredList<CSVproduct> filteredData = new FilteredList<>(data, p -> true);
        filterField.textProperty().addListener((observable, oldValue, newValue) -> {
            filteredData.setPredicate(csvproduct -> {
                if (newValue == null || newValue.isEmpty()) {
                    return true;
                }
                String lowerCaseFilter = newValue.toLowerCase();

                if (csvproduct.getProductName().toLowerCase().contains(lowerCaseFilter)) {
                    return true;
                } 
                return false;
            });
        });
        SortedList<CSVproduct> sortedData = new SortedList<>(filteredData);
        this.SearchVbox.getChildren().add(sortedData);//how do i show the sortedlist insde the SearchVbox.
    }
}

Последняя строка кода не работает. Как этот пример, чтобы отфильтровать и показать динамический шаблон VBox

...