2011-04-07 101 views
0
private var MealsListResult:ArrayList = new ArrayList; 
protected var _data:resultData = new resultData; 

private function resultHandler():void 
    { 
    var Meals:Array = _data.Meals; 
    MealsListResult = _data.Meals as ArrayList; 
    MealDataGrid.dataProvider = Meals; 
    MealListView.dataProvider = MealsListResult; 
    } 

這應該起作用嗎? MealDataGrid基於數組填充,但我在調試,MealsListResult爲null。但_data.Meals不是,我不知道如果我錯過簡單的東西。將數組轉換成數組提供者的問題

我可以通過這樣做來達到它的效果:var MealsListResult2:ArrayList = new ArrayList(Meals);但我覺得好像第一種方法應該也可以工作!

(有MXML列表和數據網格並且這種不這裏當然示出)

+1

我可以問,爲什麼ArrayList而不是ArrayCollection?我從來沒有使用ArrayList – Ryan 2011-04-07 08:06:11

回答

2

如果_data.Meals是其運行時類型是數組然後_data.Meals as ArrayCollection將失敗。但是,new ArrayCollection(_data.Meals as Array)將正常工作。

CMIIW 我想你的問題是你不能使用單個對象作爲2個或更多不同的UI數據提供者。

嘗試使用

MealDataGrid.dataProvider = _data.Meals; 
MealListView.dataProvider = ObjectUtils.clone(_data.Meals); 

UPDATE:

抱歉,我很想念readed,我雖然是ArrayColletion。但你需要做的只是像ArrayCollection

+1

使用新的ArrayList(_data.Meals as Array)作爲ArrayList的源數組傳遞給Array - 這是正確的方式。 ArrayList只是一個Array的'包裝器',爲什麼使用'As ArrayList'來投射它將無法工作。與ArrayCollection相同 – Ryan 2011-04-07 08:05:42