是否可以检查列表中是否有任何项目?
答案 0 :(得分:2)
最好检查基础绑定数据结构而不是mx.controls.List(假设你的'list'是什么意思)类,它应该只处理你的显示逻辑。
我假设你有一个绑定到ArrayCollection的列表设置。然后,您可以检查数组收集长度。这是你应该这样做的方式,让你的逻辑远离UI视图。
<fx:Script>
<![CDATA[
[Bindable]
public var data:ArrayCollection
public function isDataInList():Boolean {
return (data != null && data.length > 0)
}
]]>
</fx:Script>
<mx:List id="source" dataProvider="{data}"/>
答案 1 :(得分:2)
这取决于你的意思。
如果你的意思是一个实现IList interface的类,那么你可以通过检查length属性来找到它:
public function hasData(iListInstance:IList):Boolean{
if(iListInstance.length > 0){
return true;
}
return false;
}
如果您指的是MX List class或Spark List class的实例,则应该访问该类的dataProvider,而不是类本身,以查明其中是否包含项目。对于火花列表,您可以执行以下操作:
public function hasData(list:List):Boolean{
if((list.dataProvider) && (list.dataProvider.length > 0)){
return true;
}
return false;
}
Spark列表需要一个实现IList的dataProvider;所以你可以直接访问长度属性。如果您使用的是mx列表;那么你必须将dataProvider转换为它的类型:
public function hasData(list:List):Boolean{
if((list.dataProvider) && (list.dataProvider as ArrayCollection).length > 0)){
return true;
}
return false;
}
如果您使用术语“列表”来一般地引用任何数据集合(例如数组或XMLList)或其他内容,您将需要查看该数据类型的细节以进行计算如何确定数据类型是否为空(。或者)。
答案 2 :(得分:1)
numElements
使用spark
,numChildren
使用halo (mx)
if (list.numElements == 0) {
// no elements in a list
}