Похоже, ты слишком обдумываешь это.Поскольку вы ничего не делаете в своих методах получения / установки, вы можете избавиться от них и просто пометить вашу коллекцию ArrayCollection как Bindable, затем установить ее как dataProvider для DataGrid, и все будет сделано:
<fx:Script>
<![CDATA[
[Bindable]
public var gridData:ArrayCollecton = new ArrayCollection;
public function loadGridData():void {
// Whenever you change the gridData, the DataGrid will update appropriately.
}
]]>
</fx:Script>
<mx:DataGrid dataProvider="{gridData}"></mx:DataGrid>
Проблемас вашим существующим кодом, скорее всего, вы не отправляете событие изменения в свой установщик.Избавление от методов получения / установки позволяет ArrayCollection обрабатывать это событие для вас.Надеюсь, что это поможет.
РЕДАКТИРОВАТЬ: Исходя из обновленного вопроса, вы можете попробовать изменить свой рендерер, чтобы он выглядел так, что помогло бы, если ваш пользовательский объект данных не является привязываемым.
<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
focusEnabled="true">
<fx:Script>
<![CDATA[
override public function set data(value:Object):void {
super.data = value;
image.source = value.url;
}
]]>
</fx:Script>
<mx:Image id="image" source="{data.url}" height="65" maintainAspectRatio="true" scaleContent="true"/>