2017-03-15 17 views
0

私はObservableListと結合したListViewを持っています。画像に示すように、空、ListViewは、均一な色を有する場合、最初に、:要素を含むときと同じように見えるようにListViewを作成する方法?

enter image description here

リストに要素を追加した後、それは独自の色を有する細胞で満たさ行く:

enter image description here

もちろん、私はここで、それがこのように振る舞うのが好きではないでしょう質問です:私はそれが空の場合でも、リストは次の写真に見えるように作ることができますどのように?

答えて

2

セルのスタイルは、ListViewのcellFactoryで行います。リスト内に要素があるときだけ起動するので、リストに何もない場合は空の値をリストに追加することができます。

ObservableList<String> list = FXCollections.observableArrayList(); 
list.add(""); 
ListView<String> listview = new ListView<>(); 
listview.setItems(list); 

次に、何かが追加されたら、空の値を削除します。少しハックのビットが、あなたに希望のビジュアルを与える必要があります。

+0

ありがとうございますが、私はその "ハック"を知っています。ちょっと考えてみてください;) – notmyf4ulty

+0

このアプローチの問題は、データを扱うたびにこの特殊なケースを考慮する必要があるということです。すなわち、ビューのこの回避策を使用してデータモデルのロジックを汚染します。 OTOH、私は本当にこれを行うための実際のフックを見ていません - 仮想フロー内のセルをレイアウトするスキンの実装は、項目の数が0より大きい場合にのみ呼び出されるため、カスタムを実装する必要がありますスキン(これは少しのプロジェクトに変わります)。 –

+0

@James_D - 私は全く同意しますが、それほど邪魔にならない方法を見つけることはできませんでした。私はこのユースケースでは、エッジケースを処理するのが難しくないと思います。 –

関連する問題