
У меня две проблемы. (1) Элементы не удаляются и (2) фильтрация представления списка на основе содержимого текстового представления работает, но после фильтрации, когда текстовое представление становится пустым, в представление списка добавляются повторяющиеся элементы.
Удаление элементов из ListView
@FXML
protected void deleteItem(){
Privilege selectedItem = lstItems.getSelectionModel().getSelectedItem();
allPrivileges.remove(selectedItem);
ObservableList
filteredList = FXCollections.observableArrayList(allPrivileges);
lstItems.setItems(filteredList);
}
Фильтрация списка
private void filterPriviledges() {
String filter = txtItem.getText();
ObservableList
filteredList = FXCollections.observableArrayList(
allPrivileges.stream()
.filter(privilege -> privilege.getName().toLowerCase().startsWith(filter.toLowerCase()))
.collect(Collectors.toList())
);
lstItems.setItems(filteredList);
}
Коды для загрузки всех привилегий из веб-службы
void loadPrivileges() throws IOException {
Response response = apiService.getPrivileges().execute();
allPrivileges = response.body();
lstItems.setItems(FXCollections.observableArrayList(allPrivileges));
lstItems.setCellFactory(
new Callback() {
@Override
public ListCell call(ListView param) {
return new ListCell() {
@Override
public void updateItem(Privilege privilege, boolean empty) {
super.updateItem(privilege, empty);
if (!empty){
setText(privilege.getName());
}
}
};
}
}
);
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... g-properly
Мобильная версия