List组件将显示基于列表的信息,并且是适合显示信息数组的理想选择。

List组件由 itemrowdata provider 构成,如下所述:

  • Item:ActionScript 对象,通常包含 label 属性和 data属性,前者是描述性的属性,后者用于存储与项目关联的数据。
  • Row:用于显示项目的组件。
  • Data provider:一个组件,用于模拟 List组件所显示的项目。

默认情况下,List组件使用 CellRenderer 类提供在其中显示列表项目的行。 可以通过编程方式创建这些行;这通常通过细分 CellRenderer 类来完成。 CellRenderer 类实现 ICellRenderer 接口,该接口提供一组属性和方法,List组件可以使用这些属性和方法对其中的行进行操作,并将数据和状态信息发送到各行以供显示。 这将包括有关数据大小调整和选定内容的信息。

List组件提供针对其数据提供者执行的方法,例如 addItem()removeItem() 方法。 可以使用上述及其它方法操作同一帧中作为 List组件存在的任何数组的数据,然后将更改广播给多个视图。 如果未随 List组件提供外部数据提供者,则这些方法会自动创建一个数据提供者实例并通过 List.dataProvider 属性将其公开。 List组件将使用实现 ICellRenderer 接口的 Sprite 来呈现每一行。 若要指定此渲染器,请使用 List.cellRenderer 属性。 您也可以创建一个 Array 实例或者从服务器上获取一个实例,然后将它用作多个列表、组合框、数据网格等的数据模型。

公共的属性:iconField:String---获取或设置用于提供项的图标的项字段

    iconFunction:Function---获取或设置用于获得项的图标的函数

    labelField:String---获取或设置dataProvider对象中的字段名称,该字段名称将显示为TextInput字段和下拉列表的标签

    labelFunction:Function---获取或设置用于获得项的标签的函数

    rowCount:uint---获取或设置在列表中至少部分可见的行的行数

    rowHeight:Number---获取或设置列表中每一行的高度,以像素为单位

公共方法:

  List();---创建新的List组件实例

  getStyleDefinition():Object---基于itemToLabel和labelFunction属性检索渲染器将为给定数据对象显示的字符串

  scrollToIndex(newCaretIndex:int):void---将列表滚动至位于指定索引处的项目

其所继承的属性与方法就不一一列出,下面举一个实例供你参考

package 
{
//	import flashx.textLayout.elements.ListElement;		//类所在的包
	import flash.display.MovieClip;
	import fl.controls.List;
	import fl.data.DataProvider;
	import flash.text.TextFormat;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.MouseEvent;
	import fl.events.ListEvent;

	public class ListMain extends MovieClip		//声明变量,创建新实例
	{
		private var list:List = new List();//创建新的list实例

		private var loader:Loader;
		private var str:String;
		private var url:URLRequest;
		private var loader1:Loader;
		private var str1:String;
		private var url1:URLRequest;
		private var arr:Array = new Array();
		private var arr1:Array = new Array();
        private var arrName:Array = ["经典皮包","V型皮包","飞蝶皮包","饺子型皮包","个性皮包","时尚皮包","布袋皮包","精巧挎包","小兜皮包","钻石型皮包","现代女性皮包"]; 
		private var dp:DataProvider = new DataProvider();

		public function ListMain()
		{
			initlist();
			initdp();
			initloader();
		}
		private function initloader():void
		{
			for (var j:int = 0; j < 11; j++)
			{
				str = ((j + 1) + ".jpg");
				loader = new Loader  ;
				url = new URLRequest(str);
				loader.load(url);
				arr[j] = loader;
				stage.addChild(arr[j]);
			}
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderInfoHandler);
		}
		private function onLoaderInfoHandler(e:Event):void
		{
			for (var l:int = 0; l < 11; l++)
			{
				arr[l].height = 400;
				arr[l].width = 370;
				arr[l].x = 170;
//				arr[l].y = 0;
				stage.addChild(arr[l]);
//				arr[0].visible = false;
				arr[l].visible = true;
			}

		}
		private function initdp():void
		{
			for (var i:int = 0; i < 11; i++)
			{
				loader1 = new Loader();
				str1 = ((i + 1) + ".png");
				url1 = new URLRequest(str1);
				loader1.load(url1);
				arr1[i] = loader1;
			}
			loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,onCompleteHandler);
		}
		private function onCompleteHandler(e:Event):void
		{
			for (var b:int = 0; b < arrName.length; b++)
			{
				dp.addItem({aa:String(arrName[b]),shux:arr1[b]});
				
			}
		}
		private function initlist():void
		{
			var txt:TextFormat = new TextFormat("楷体",12,0x663399);
			list.setRendererStyle("textFormat",txt);
			list.dataProvider = dp;
			list.iconField = "shux";
			list.labelField = "aa";
			stage.addChild(list);
//			list.x = 0;
//			list.y = 0;
			list.height = 400;
			list.width = 160;
			list.rowHeight = 80;
			list.addEventListener(ListEvent.ITEM_CLICK,onListHandler);
		}
		private function onListHandler(e:ListEvent):void
		{
			trace(e.item.shux);
			trace(list.itemToLabel(e.item));
			for (var b:int = 0; b < 11; b++)
			{
				if (list.itemToLabel(e.item) == String(arrName[b]))
				{
					arr[b].visible = true;
				}
				else
				{
					arr[b].visible = false;
				}
			}
		}
	}

}
//加注释的是可要可不要