簡體   English   中英

在用戶輸入后,如何從ListView添加/刪除項目?

[英]How can I add/delete items from a ListView upon input from user?

所以我有以下ListView

ObservableList<String> numList = FXCollections.observableArrayList(
                "1","2","3"
        );

我希望能夠根據用戶先前在ComboBox選擇的內容來更改ListView的項目。

假設用戶想要7個商品,而不是我擁有的默認3個商品。 然后,代碼將出現:

ObservableList<String> numList = FXCollections.observableArrayList(
                "1","2","3","4","5","6","7"
        );

有什么方法可以執行此操作,還是我必須創建多個ListView並根據用戶輸入使用所需的任一個?

您可以使用相同的ListView 您甚至不需要替換items列表,只需修改現有項目即可。
順便說一句:在這種情況下,我建議使用Integer作為類型參數:

ComboBox<Integer> comboBox = new ComboBox<>(FXCollections.observableArrayList(1, 3, 5, 7));
ObservableList<Integer> numList = FXCollections.observableArrayList();
ListView<Integer> listView = new ListView<>(numList);

ChangeListener<Integer> listener = (observable, oldCount, newCount) -> {
    int size = numList.size();
    int newSize = newCount == null ? 0 : newCount;
    if (size > newSize) {
        numList.subList(newSize, size).clear();
    } else {
        for (int i = size+1; i <= newSize; i++) {
            numList.add(i);
        }
    }
};

comboBox.valueProperty().addListener(listener);

// in case you assigned a initial value before
listener.changed(null, null, comboBox.getValue());

但是,您也可以使用setValue將現有ListView的項目列表替換為新的ListView

ListView<String> listView = new ListView<>();
ComboBox<ObservableList<String>> comboBox = new ComboBox<>(...);
ChangeListener<ObservableList<String>> listener = (observable, oldList, newList) -> {
    if (newList == null) {
        newList = FXCollections.emptyObservableList();
    }
    listView.setItems(newList);
};
comboBox.valueProperty().addListener(listener);

// in case you assigned a initial value before
listener.changed(null, null, comboBox.getValue());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM