私はラベルの配列リストを含むリストビューを検索フィルター(ユーザー名)があります。リストビューフィルタは、最初の項目に取り組んでいます
はpublic void updateList() {
UserDAO theDAO = new UserDAO();
userList = theDAO.storeUsers();
listView.setItems(userList);
filterField.textProperty().addListener(new ChangeListener() {
public void changed(ObservableValue observable, Object oldVal, Object newVal) {
search((String) oldVal, (String) newVal);
}
});
}
public void search(String oldVal, String newVal) {
if (oldVal != null && (newVal.length() < oldVal.length())) {
listView.setItems(userList);
}
String value = newVal.toUpperCase();
ObservableList<Label> secondList = FXCollections.observableArrayList();
for (Object entry : listView.getItems()) {
boolean match = true;
Label entryText = (Label) entry;
if (!entryText.getText().toUpperCase().contains(value)) {
match = false;
break;
}
if (match) {
secondList.add(entryText);
}
}
listView.setItems(secondList);
}
今のところ、私のリストビューが含まれています
テストを 3番目
"test"で任意の文字を入力すると、「3番目」と「123」が正しくフィルタリングされ、ListViewにのみ「test」と表示されます。 "t"とタイプすると "3番目"も表示されませんか?
また、フィルターに「123」または「third」と入力すると、すべてのものが除外されます。
どうすればこの問題を解決できますか?