Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private class AliasListCellFactory implements
- Callback<ListView<DXSynonym>, ListCell<DXSynonym>> {
- @Override
- public ListCell<DXSynonym> call(ListView<DXSynonym> p) {
- return new ListCell<DXSynonym>() {
- @Override
- protected void updateItem(DXSynonym item, boolean empty) {
- super.updateItem(item, empty);
- if (item != null) {
- DXSynonym dx = (DXSynonym) lsvAlias.getUserData();
- if (dx != null && dx == item) {
- this.setStyle("-fx-text-fill: crimson;");
- } else { this.setStyle("-fx-text-fill: black;"); }
- this.setText(item.getDxName());
- } else { this.setText(Census.FORMAT_TEXT_NULL); }
- }};
- }
- // Handler for Button[fx:id="btnAliasDefault"] onAction
- @FXML
- void handleAliasDefault(ActionEvent event) {
- int sel = lsvAlias.getSelectionModel().getSelectedIndex();
- if (sel >= 0 && sel < lsvAlias.getItems().size()) {
- lsvAlias.setUserData(lsvAlias.getItems().get(sel));
- }
- }
- public void refresh() {
- super.flow.recreateCells();
- }
- MySkin<Subscription> skin = new MySkin<>(this.listView); // Injected by FXML
- this.listView.setSkin(skin);
- ...
- ((MySkin) listView.getSkin()).refresh(); // This is how you use it
- public class Custom {
- StringProperty name = new SimpleStringProperty();
- IntegerProperty id = new SimpleIntegerProperty();
- public static Callback<Custom, Observable[]> extractor() {
- return new Callback<Custom, Observable[]>() {
- @Override
- public Observable[] call(Custom param) {
- return new Observable[]{param.id, param.name};
- }
- };
- }
- @Override
- public String toString() {
- return String.format("%s: %s", name.get(), id.get());
- }
- }
- ListView<Custom> myListView;
- //...init the ListView appropriately
- ObservableList<Custom> items = FXCollections.observableArrayList(Custom.extractor());
- myListView.setItems(items);
- Custom item = new Custom();
- items.add(item);
- item.name.set("Mickey Mouse");
- // ^ Should update your ListView!!!
- @FXML
- void handleAliasDefault(ActionEvent event) {
- int sel = lsvAlias.getSelectionModel().getSelectedIndex();
- if (sel >= 0 && sel < lsvAlias.getItems().size()) {
- lsvAlias.setUserData(lsvAlias.getItems().get(sel));
- this.<DXSynonym>forceListRefreshOn(lsvAlias);
- }
- }
- private <T> void forceListRefreshOn(ListView<T> lsv) {
- ObservableList<T> items = lsv.<T>getItems();
- lsv.<T>setItems(null);
- lsv.<T>setItems(items);
- }
- ListView<T> list;
- list.refresh();
Add Comment
Please, Sign In to add comment