2016-03-31 8 views
1

link to imgurのJavaFX ListViewの重複除去エラー

@FXML 
ListView queueList; 

ObservableList<QueueSong> SongQueueObservableList; 


queueList.setCellFactory(new Callback<ListView<QueueSong>,ListCell<QueueSong>>() { 
    @Override 
    public ListCell<QueueSong> call(ListView<QueueSong> myObjectListView) { 
     ListCell<QueueSong> cell = new ListCell<QueueSong>(){ 
      @Override 
      protected void updateItem(QueueSong myObject, boolean b) { 
       super.updateItem(myObject, b); 
       if(myObject != null) { 
        setText(myObject.getSong()); 
       } 
      } 
     }; 
     return cell; 
    } 
}); 

queueList.setItems(SongQueueObservableList); 

SongQueueObservableList.add(new QueueSong("song 1", "artist 1")); 
SongQueueObservableList.add(new QueueSong("song 2", "artist 2")); 
SongQueueObservableList.add(new QueueSong("song 3", "artist 3")); 
SongQueueObservableList.add(new QueueSong("song 4", "artist 4")); 

私は、最初の重複した後の行

Platform.runLater(() -> { 
     // queueList.getItems().remove(0); 
     SongQueueObservableList.remove(0); 
    }); 

を除去する以下の実装は選択できません試みました。リストからすべての値が削除されると、ListViewは空のリストで更新されます。

誰かがこれを解決する方法に関するヒントを持っているなら、私はそれを感謝します。

デバッガを使用すると、ObservableListListViewの両方に期待値があります。本当の質問は、なぜすべてのオブジェクトが削除されたときに、ListViewはそれ自体をクリアするのでしょうか?

+0

[最小、完全で、検証可能な例](http://stackoverflow.com/help/mcve)を問題に追加できますか? ? – ItachiUchiha

答えて

2

問題は使用するセルクラスです。テキストを設定するだけですが、決してクリアしません。

new ListCell<QueueSong>(){ 
    @Override 
    protected void updateItem(QueueSong myObject, boolean empty) { 
     super.updateItem(myObject, empty); 
     // set text to song or clear (= set to null) 
     setText((empty || myObject == null) ? null : myObject.getSong()); 
    } 
} 
+0

私はこれを自分で見つけたはずです。どうもありがとうございます。 – user3277087