0
目標是過濾tableView。因此,當我輸入某些東西來過濾它時工作得很好,但是當我點擊退格或刪除textField區域上的輸入返回時, tableView顯示表中沒有內容,然後我不得不重新啓動程序重新加載並顯示數據。數據被保存並從xml文件加載。tableView過濾器,表中沒有任何輸入
另外,我把數據類上的聯繫人ObservaleList加載和存儲contactList,但在控制器上我有一個類似的過濾器列表,然後控制器擴展數據類getContacts從那裏添加filtredList到它。我非常肯定,問題來自於
public Data() {
contacts = FXCollections.observableArrayList();
}
public ObservableList<Contact> getContacts() {
return contacts;
}
這是在過濾網下面處理
public void filterContactList(String oldValue, String newValue) {
ObservableList<Contact> filteredList = FXCollections.observableArrayList();
if (filterInput == null || newValue.length() < oldValue.length() || newValue == null){
contactsTable.setItems(getContacts());
}else {
newValue = newValue.toUpperCase();
for (Contact contact: contactsTable.getItems()){
String filterFirstName = contact.getFirstName();
String filterLastName = contact.getFirstName();
if (filterFirstName.toUpperCase().contains(newValue) || filterLastName.toUpperCase().contains(newValue)){
filteredList.add(contact);
}
}
contactsTable.setItems(filteredList);
}
}
,這是init監聽
filterInput.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
filterContactList((String) oldValue, (String) newValue);
}
});