Apache flex 在Flex中获取工具提示以正确刷新itemrenderer时出现问题
我有以下问题 我有一个ArrayCollection,它充当名为favoriteLinksList的tilelist的数据提供程序 我使用名为FavoriteItem的itemRenderer作为tilelist的itemRenderer。此FavoriteItem如下所示:Apache flex 在Flex中获取工具提示以正确刷新itemrenderer时出现问题,apache-flex,flex3,tooltip,itemrenderer,Apache Flex,Flex3,Tooltip,Itemrenderer,我有以下问题 我有一个ArrayCollection,它充当名为favoriteLinksList的tilelist的数据提供程序 我使用名为FavoriteItem的itemRenderer作为tilelist的itemRenderer。此FavoriteItem如下所示: <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="280"
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
width="280" height="163"
horizontalAlign="center"
paddingLeft="5" paddingRight="5" paddingTop="0" paddingBottom="0" xmlns:ns1="*">
<mx:Canvas width="100%" height="100%">
<mx:Image
id="thumbnail"
width="178" height="115"
source="{data.thumbnail}"
toolTip = "{data.tooltip}" x="46" y="10"/>
<mx:Text
id="title"
text="{data.tileListTitle}"
width="254"
toolTip="{data.tooltip}" x="10" y="133"/>
</mx:Canvas>
</mx:VBox>
更新了工具提示后,但出现编译错误:
通过静态类型为mx.controls.listClasses:IListItemRenderer的引用访问可能未定义的属性标题
我还尝试对favoriteLinksList数组集合执行刷新,但结果不一。工具提示已正确更新,但tilelist中的第一个项目之一丢失!这似乎是一个Flex错误。数据提供程序在刷新前后具有相同数量的元素,如果单击tilelist中的第一个元素,则不会发生这种情况
非常感谢您的帮助。我将着手做两件事 该对象实际上是可绑定的,并且正在发生更改并到达项目渲染器 可能的解决方案=>覆盖项呈现器中数据属性的setter,不要忘记调用super.data=value -
站在这一行的断点处,当数据发生变化时,您应该可以到达断点。我将着手做两件事 该对象实际上是可绑定的,并且正在发生更改并到达项目渲染器 可能的解决方案=>覆盖项呈现器中数据属性的setter,不要忘记调用super.data=value -
这一行中有一个断点,当数据发生变化时,您应该可以到达断点。找到了我的问题的解决方案 favoriteLinksList是可绑定的,并设置为tileList的数据提供程序。但是,对单个对象的更改没有传播到itemRenderer 我认为必须对favoriteLinksList数组集合本身进行更改 正如我在问题中提到的,我已经尝试使用favoriteLinksList.refresh,但是这使得tileList中的第一个元素消失了,尽管它似乎仍然在数组集合中。Flex中可能存在一个bug 无论如何,我发现解决这一问题的方法是执行以下操作:
favoriteLinksList.setItemAt(favoriteObject, favoriteLinksList.getItemIndex(favoriteObject));
本质上,我将索引X处的项设置为自身,因此实际上不执行任何操作,但这足以让itemRenderer刷新itemRenderer的数据。找到了解决问题的方法 favoriteLinksList是可绑定的,并设置为tileList的数据提供程序。但是,对单个对象的更改没有传播到itemRenderer 我认为必须对favoriteLinksList数组集合本身进行更改 正如我在问题中提到的,我已经尝试使用favoriteLinksList.refresh,但是这使得tileList中的第一个元素消失了,尽管它似乎仍然在数组集合中。Flex中可能存在一个bug 无论如何,我发现解决这一问题的方法是执行以下操作:
favoriteLinksList.setItemAt(favoriteObject, favoriteLinksList.getItemIndex(favoriteObject));
本质上,我将索引X处的项设置为自身,因此实际上不执行任何操作,但这足以让itemRenderer刷新itemRenderer的数据。由于某些原因,我粘贴的代码格式不正确。下面是代码链接:我无法访问title.toolTip=data.toolTip的null对象引用的属性。toolTip考虑将数据更改为值,使其成为title.toolTip=value.toolTip,但仍然没有乐趣:favoriteLinksList是[Bindable],并且在应用程序启动时对它所做的更改在tilelist中正确反映。问题是对它的后续更改。意识到尽管favoriteLinksList是可绑定的,并设置为tileList的数据提供程序,但对单个对象的更改一定没有传播到tileList。找到了一个解决方案并将其包含在下面。Tzurel我没有解释为什么您的代码不会出现,但它似乎与列表有关。在列表和代码段之间添加“-”可以解决此问题。由于某些原因,我粘贴的代码格式设置不正确。下面是代码链接:我无法访问title.toolTip=data.toolTip的null对象引用的属性。toolTip考虑将数据更改为值,使其成为title.toolTip=value.toolTip,但仍然没有乐趣:favoriteLinksList是[Bindable],并且在应用程序启动时对它所做的更改在tilelist中正确反映。问题是对它的后续更改。意识到尽管favoriteLinksList是可绑定的,并设置为tileList的数据提供程序,但对单个对象的更改一定没有传播到tileList。找到了一个解决方案并将其包含在下面。Tzurel我没有解释为什么您的代码不会出现,但它似乎与列表有关。在列表和代码段apears之间添加“-”,以解决 苏。
favoriteLinksList.setItemAt(favoriteObject, favoriteLinksList.getItemIndex(favoriteObject));