2017-05-10 7 views
0

をスクロールした後に変更順序:リストビュー項目は、私は私のリストビューを移入このループを持って

private final ArrayList<Image> stationLogos = new ArrayList<>(); 
private List<Item> m_station_items; 
ListView<String> list = new ListView<>(); 
ObservableList<String> items = FXCollections.observableArrayList(); 
stationLogos.add(null); 

for (Item item : m_station_items) 
    { 
     station_name = item.getTitle(); 
     items.add(station_name); 
     BufferedImage buffered = (BufferedImage) m_app.retrieveBitmap(item.getLogoPath()); 

     Image tempImg = SwingFXUtils.toFXImage(buffered, null); 
     stationLogos.add(tempImg); 

     list.setCellFactory(param -> new ListCell<String>() { 
     private final ImageView imageView = new ImageView(); 

     @Override 
     public void updateItem(String name, boolean empty) 
     { 
      super.updateItem(name, empty); 
      if (name != null) { 
       if(logoIterations < stationLogos.size()) 
        { 
        imageView.setImage(stationLogos.get(logoIterations)); 
        setText(name); 
        setGraphic(imageView); 
        logoIterations++; 
        } 
       } 
      } 
     }); 
    } 

list.setItems(items); 

それはそれは打ち上げ後に想定しているように見えますが、私がダウンしてスクロールや項目の変更の順​​序をバックアップする場合。どのようなアイデアが間違っているかもしれない?ここではアプリの小さな例のビデオです:https://youtu.be/LbMuASBgJIQ

答えて

1

あなたがリストのListView<Item>を表示させる必要があり、その後、あなたは簡単にこのようにそれを設定することができます。

ListView<Item> list = new ListView<>(); 
list.setItems(m_station_items); 
list.setCellFactory(lv -> new ListCell<>() { 
    private final ImageView imageView = new ImageView(); 
    @Override 
    protected void updateItem(Item item, boolean empty) { 
     super.updateItem(item, empty); 
     if (empty) { 
      setText(null); 
      setGraphic(null); 
     } else { 
      setText(item.getTitle()); 
      // may need to construct image differently, depending on what is in logoPath 
      imageView.setImage(new Image(item.getLogoPath().toURI().toString())); 
      setGraphic(imageView); 
     } 
    } 
}); 
+0

それが実際に動作おかげで、あなたの方法! – filcitheking

関連する問題