Zdravím,
nevíte někdo, kolikrát se spouští CellFactory v javaFX ? Před vrácení upravené ListCell jsem totiž umístil ještě jednu metodu, ale zdá se, že ta proběhne jen poprvé a poté už není nikdy volána.
scoreBoardLV.setCellFactory(new Callback<ListView<SnakeScoreManager>, ListCell<SnakeScoreManager>>(){
@Override public ListCell<SnakeScoreManager> call(ListView<SnakeScoreManager> param){
SnakeScoreManager topScore = getTopScore();
ListCell<SnakeScoreManager> cell = new ListCell<SnakeScoreManager>(){
protected void updateItem(SnakeScoreManager t, boolean empty){
super.updateItem(t, empty);
if (!empty){
if(topScore!=null && t.equals(topScore)){
setText(t.getFormatedDate()+" TOP SCORE");
setTextFill(Color.ORANGE);
}else {setText(t.getFormatedDate());}
}else {setText(null);}
}
};
return cell;
}
});
Zde je metoda pro zjištění top score, která je ale zavolána pouze jednou
public SnakeScoreManager getTopScore(){
if (!scoreBoard.isEmpty()){
SnakeScoreManager topScore = null;
for (Iterator<SnakeScoreManager> iterator = scoreBoard.iterator(); iterator.hasNext();){
SnakeScoreManager thisRecord = iterator.next();
if (topScore != null){
if (topScore.getScore()<thisRecord.getScore() || topScore.getScore() == thisRecord.getScore()
&& topScore.getPlayTimeInMilis()> thisRecord.getPlayTimeInMilis()){ topScore = thisRecord;}
}else{topScore = thisRecord;}
}
return topScore;
}else {return null;}
}