2016-07-21 8 views
0

Во-первых, я создал таблицу. Добавлены значения. Затем добавлен слушатель в текстовое поле2 для поиска (фильтрации). И у меня есть функция getStatistics для получения общей суммы значений в одном столбце. Но он не работал после фильтрации данных. Как я могу получить общую сумму значений после фильтрации?Javafx tableview получить значения из отфильтрованного списка

ObservableList<CurrentreservsController.userdata> data; 
 
    data = FXCollections.observableArrayList(); 
 
....... 
 
....... 
 

 
     FilteredList<userdata> filt = new FilteredList<>(data, p ->true); 
 
       textfield2.textProperty().addListener((observable, oldValue, newValue) -> { 
 
       filt.setPredicate(userdata -> { 
 
        if (newValue == null || newValue.isEmpty()) { 
 
         return true; 
 
        } 
 
        String lowerCaseFilter = newValue.toLowerCase(); 
 
       if (userdata.otag.toString().toLowerCase().contains(lowerCaseFilter)) { 
 
         return true; // Filter matches first name. 
 
        } else if (userdata.cm.toString().toLowerCase().contains(lowerCaseFilter)) { 
 
         return true; // Filter matches last name. 
 
        } 
 
        return false; // Does not match. 
 
       }); 
 
      }); 
 
      SortedList<userdata> sortedData = new SortedList<>(filt); 
 
      sortedData.comparatorProperty().bind(tablesettings.comparatorProperty()); 
 
      tablesettings.setItems(sortedData); 
 
      seartol=0; 
 
      getStatistics();

getStatistic функция

private void getStatistics() { 
 
      seartol=0; 
 
     for (userdata product : data) { 
 
     seartol = seartol + Integer.parseInt(product.tol.getValue().toString()); 
 
     } 
 
     label1.setText("Total sum: "+seartol); 
 
    }

ответ

0

Вы просто должны рассчитать статистические данные, основанные на отфильтрованный список не список источников.

private void getStatistics() { 
    seartol=0; 
    for (userdata product : filt) { 
     seartol = seartol + Integer.parseInt(product.tol.getValue().toString()); 
    } 
     label1.setText("Total sum: "+seartol); 
} 
+0

upsss. Благодарю . Он работал – Gpear

+0

@Gpear: Если решение работает для вас, подумайте о принятии его вместо того, чтобы просто оставить комментарий. Это облегчает другим обнаружение того, что найдено рабочее решение. – fabian

Смежные вопросы