2016-07-21 3 views
0

まずテーブルを作成しました。そして値を加えました。次に、検索(フィルタリング)のためにリスナーをtextfield2に追加しました。そして、私は1つの列に値の合計を得る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

関連する問題