我有一个有趣的情况,我有一个列表框,显示字符串的ArrayList,但我希望能够将显示的字符串与我不想要显示的其他数据相关联
当然,我可以这样做的一种方法是创建一个关联数组,用于键入列表框中显示的字符串。困扰我的唯一事情就是必须维护两个独立的数组才能做到这一点。这个列表可能会有点大,而且我不想占用过多的内存来复制我正在显示的字符串,当然如果我总是在单独的数组中复制我的显示字符串,它会影响性能。
我想要做的是拥有一个对象数组,其中包含我想在列表框中显示的字符串。我希望能够显示字符串而不显示对象中的任何其他数据,当我在列表框中进行选择时,我的选择允许我访问对象中的其余数据。
有没有办法做到这一点?如果是这样,怎么样?
提前感谢任何建议......
答案 0 :(得分:1)
您可以使用DataProvider
:
var dataProvider:DataProvider = new DataProvider();
dataProvider.addItem({label:"test", data:{x:0,y:10,someOtherData:"misc"}});
dataProvider.addItem({label:"test 2", data:{x:30,y:120,someOtherData:"foo"}});
list_box.dataProvider = dataProvider;
...
trace(list_box.getItemAt(1).data.someOtherData); //foo
注意,您可以使用列表,XML实例或数据对象数组作为数据源来实例化(通过将参数传递给构造函数)DataProvider
。