I am using the CharmListView
and just noticed that it doesn't have a SelectionModel
that the ListView has. I used to use listView.getSelectionModel().SelectedItemProperty().addListener()
to respond to an item selection event with a ListView
. How is that done with the CharmListView?
EDIT
The app flow is explained below:
The user selects a department of a school. This list is in a ListView
then a semester. This other list is in a CharmListView
:
The initialize
method of the SemesterPresenter
class:
public void initialize(URL url, ResourceBundle rb) {
loadSemesters();
semesterListView.setItems(semesters);
semesterListView.setHeadersFunction(Level::getLevel);
MobileApplication.getInstance().getView().showingProperty().addListener((obs,ov,nv)->{
System.out.println(semesterListView.getChildrenUnmodifiable());
});
}
The first call to getChildrenUnmodifiable() returns an empty array. It's the same scenario when using all the propositions in the posts below with null pointers returned.
For now several properties of the inner
ListView
control are not exposed, like the selectionModel or the focusModel. Those may be in incoming releases.For now, as a workaround you can lookup for it:
An issue has been filed with this request.
EDIT
Based on the new info provided by the OP, right after the
CharmListView
is initialized, the control is created, but it hasn't created its skin yet, so the list of children is empty at this moment.Adding
Platform.runLater();
just delays the retrieval of that list the amount of time required for the control to fully create the skin.This should work:
Also, based on the idea of the skin creation, this will work as well, giving you the exact moment when the
ListView
is created: