Я отредактировал ваш исходный код на основе предположений о том, что вы пытались выполнить, я добавил объекты Array непосредственно в коллекцию, которой назначен поставщик данных, в этом случае вы должны увидеть выходные данные метода .toString (), вызванного для массив вместо класса Object, класс Object .toString () выведет [объект Object], который вы видели на дисплее. Метод Array .toString () будет вызывать .toString () для каждого элемента в массиве, отделять их запятыми и окружать их фигурными скобками, что очень похоже на то, что вы используете при определении массива. В качестве альтернативы вы можете создать свой собственный класс, который расширяет Object, и создать свой собственный метод toString для переопределения поведения по умолчанию. Использование Object, как правило, не очень хорошая практика (есть исключения из этого, это не жесткое правило, но, как правило, лучше использовать конкретный тип класса или даже лучше интерфейс, когда это возможно).
var labs:ArrayCollection = new ArrayCollection();
var sets:ArrayCollection = new ArrayCollection();
var labsArray:Array = ["ProDPI","WHCC","Tin"];
var setsArray:Array = [ ["Set01","Set02","Set03","Set04"],["Set11","Set12","Set13","Set14"], ["Set21","Set22","Set23","Set24"] ];
var objLab:Object = new Object;
objLab.labName = labsArray[0];
objLab.setFolders = undefined;
labs.addItem(objLab);
for (var i:int = 0; i < setsArray.length; i++) {
sets.addItem(setsArray[i]);
objLab.setFolders = setsArray[i];
}
labFolderList.labelField="labName";
labFolderList.dataProvider=labs;
setFolderList.labelField="setFolders";
setFolderList.dataProvider=sets;
Другой альтернативой созданию класса, как я объяснил выше, является использование labelFunction вместо labelField с использованием labelFunction каждого элемента: объект в dataProvider будет передан в вашу пользовательскую labelFunction, и вы можете вернуть строку на основе любого Логика вы считаете нужным. Было бы что-то вроде этого:
setFolderList.labelFunction = myLabelFunction;
private function myLabelFunction(item:Object):String
{
var retString:String = "";
for(var i:int=0; i<item.setName.length; i++)
{
if(i>0)
retString += ", ";
retString += item.setName[i];
}
return retString;
}