Hallo,
Ich möchte eine einfache Liste (ListView<String>) über ein Textfeld filtern können.
Ich habe dazu folgendes gefunden:
https://code.makery.ch/blog/javafx-8-tableview-sorting-filtering/
Und möchte dies nun an meine Gegebenheiten anpassen.
Leider klappt es mit der gefilterten Anzeige nicht. Ich glaube das Problem liegt daran, dass ich die SortedList nicht mit der ListView "verbinden" kann.
Anbei Mein Versuch:
Denn in Zeile 30 gibt es ein Problem, also der Befehl gibt es so gar nicht....
Die Liste "list" ist eine observableList<String>
Im Beispiel wird die filteredList ja an eine TableView gebunden.
Wie kann ich dies an meine ListView binden?
Oder mache ich sonst wo einen Fehler?
Ich hoffe diese Angaben genügen, um den Fehler einzugrenzen...
Besten Dank schon im Voraus für eure Hilfe
Ich möchte eine einfache Liste (ListView<String>) über ein Textfeld filtern können.
Ich habe dazu folgendes gefunden:
https://code.makery.ch/blog/javafx-8-tableview-sorting-filtering/
Und möchte dies nun an meine Gegebenheiten anpassen.
Leider klappt es mit der gefilterten Anzeige nicht. Ich glaube das Problem liegt daran, dass ich die SortedList nicht mit der ListView "verbinden" kann.
Anbei Mein Versuch:
Java:
public void initialize() {
// 1. Wrap the ObservableList in a FilteredList (initially display all data).
FilteredList<String> filteredData = new FilteredList<>(items, p -> true);
// 2. Set the filter Predicate whenever the filter changes.
filterField.textProperty().addListener((observable, oldValue, newValue) -> {
filteredData.setPredicate(items -> {
// If filter text is empty, display all persons.
if (newValue == null || newValue.isEmpty()) {
return true;
}
// Compare first name and last name of every person with filter text.
String lowerCaseFilter = newValue.toLowerCase();
if (items.toLowerCase().indexOf(lowerCaseFilter) != -1) {
System.out.println("gefunden!");
return true; // Filter matches first name.
}
return false; // Does not match.
});
});
System.out.println("next");
// 3. Wrap the FilteredList in a SortedList.
SortedList<String> sortedData = new SortedList<>(filteredData);
// 4. Bind the SortedList comparator to the TableView comparator.
// Otherwise, sorting the TableView would have no effect.
sortedData.comparatorProperty().bind(list.sorted().comparatorProperty());
// 5. Add sorted (and filtered) data to the table.
list.setItems(sortedData);
}
Denn in Zeile 30 gibt es ein Problem, also der Befehl gibt es so gar nicht....
Die Liste "list" ist eine observableList<String>
Java:
private ObservableList<String> items = FXCollections.observableArrayList();
@FXML
private ListView<String> list;
Im Beispiel wird die filteredList ja an eine TableView gebunden.
Wie kann ich dies an meine ListView binden?
Oder mache ich sonst wo einen Fehler?
Ich hoffe diese Angaben genügen, um den Fehler einzugrenzen...
Besten Dank schon im Voraus für eure Hilfe