0
Tableviewでさまざまな状態を数え、ラベルに表示したいとします。値が変更されるたびにリスト全体を反復することなくこの機能を実現する方法はありますか?異なる状態の量をラベルにバインドする方法はありますか?反復せずにTableviewの異なる文字列のJavaFX数の出現?
は現在、私は、リストを反復処理でこれをやっている:
private void updateLbl(){
int on = 0, off = 0, un = 0;
for(StringContainer wps : streamLinkList){
if(wps.getState().equals("online")){
on++;
} else if(wps.getState().equals("offline")){
off++;
} else if(wps.getState().equals("unknown")){
un++;
} else {
se++;
}
}
onLbl.setText("Online: " + on);
offLbl.setText("Offline: " + off);
unLbl.setText("Unknown: " + un);
}
EDIT:
リストObservableListです。 StringContainerには異なるStringPropertyが含まれています。
class StringContainer{
private StringProperty state;
public StringContainer(){
this.state = new SimpleStringProperty();
}
// state
public void setState(String state){
this.state.set(state);
}
public String getState(){
return state.get();
}
public StringProperty stateProperty(){
return state;
}
}
をあなたは、ストリーム(ラムダ)でそれを行うことができますが、でも、この方法は、反復を使用しています「**私は、どのような場合で考える**」: 'liste.stream()。filter(f-> filtering).forEach(i-> doAction);' –
リストが 'ObservableList'ならば(もしあなたがそれを作ることができるなら)、それを観察して見ることができます何が変わったのかしかし、本当にあなたはリストが何であるか、そしてそれが答えることができるために 'StringContainer'などが何であるかを教えなければなりません。 –
はい、そのObservableListです。投稿を「StringContainer」の情報で更新しました – Ronon