我有一个主类ClassA,它有一堆“普通”属性,它们是简单的数据类型,如整数,字符串等。它还有一个属性(“childItems”),它是ClassB的ArrayCollection。
我使用ClassA的ArrayCollection作为AdvancedDataGrid的分层数据提供程序的源。我将childrenField设置为“childItems”。
我想在嵌套表和饼图中显示有关ClassB对象列表的一些信息,因此我配置了AdvancedDataGridItemRendererProvider(columnIndex = 0,columnSpan = 0,depth = 2)并将其指向我的自定义渲染器,即带有表格和饼图的HBox。
为了查看正在设置的内容,我在自定义渲染器中覆盖了“set data”函数,我看到的是ArrayCollection中ClassB的每个实例都单独传递给渲染器。
这是我的问题:我希望将ClassB实例的整个ArrayCollection传递给自定义renderprovider一次,而不是单独传递给子列表中的每个项目。如何让ADG理解整个属性应该作为数据传递给渲染器而不是每个条目分别传递?
顺便说一下,当我将“childItems”的数据类型从ArrayCollection更改为ArrayList时,整个列表都会被传递,我可以轻松地做我想做的事情。但根据我的理解,不应该使用ArrayList,并且ArrayCollection更好或至少更常见。
对此有任何见解将不胜感激。
谢谢!
答案 0 :(得分:1)
我几乎坚持使用ArrayList而不是ArrayCollection作为属性数据类型。然后整个ArrayList一次传递给一个渲染器,而不是ArrayCollection中每个项目的一个渲染器。
这不是特别好,因为源数据结构是一个ArrayCollection,我所有的其他列表都是ArrayCollections,但这对我有用,我从来没有想过为此寻找不同的解决方案。