2012-03-09 124 views
0

是否可以定義一個屬性來限制出現在mx:List中的元素的數量?我已閱讀關於設置屬性rowCount,但我沒有看到任何影響。 是否可以應用過濾器來實現此目的?我的目的是避免從列表/數組集合中刪除項目,但只是「隱藏」它們。這可以做到嗎?Flex列表限制元素數量

回答

1

不同的選項是使用新的ArrayCollection,讓你的從大的ArrayCollection有限的項目:

//get first 10 elements 
myArrayCollection = new ArrayCollection(myBigArrayCollection.toArray().slice(0,9)); 
如果你想與尋呼機工作

,您能不能在這裏你跟蹤的用戶在什麼頁面的計數器,並得到你的大陣列收集的下一個元素。例如:

//this is just a (very) simple example 
//page = integer (counter) for knowing which page the user is on 
page = 0; 
page_low = page*10; 
page_high = page_low + 9; 
myArrayCollection = new ArrayCollection(myBigArrayCollection.toArray().slice(page_low,page_high)); 

(仍然使用過濾器是一種更好的解決方案)

2

通過使用Collection類(如ArrayCollection)和過濾數據,您可以「隱藏」顯示在基於列表的類中的項目,而無需修改基礎源數據。

閱讀這些docs on Collection filtering

報價:

您可以使用過濾功能的集合中的數據視圖限制爲 源數據對象的子集。該函數必須採用單個 對象參數(對應於收集項目),並且必須 返回一個布爾值,指定是否在 視圖中包含該項目。與排序一樣,當您指定或更改篩選功能時,您必須調用集合上的refresh()方法以顯示 篩選結果。爲了限制字符串數組的集合視圖 只包含開始以M串,例如,使用下面的 過濾功能:

public function stateFilterFunc(item:Object):Boolean 
{ 
    return item >= "M" && item < "N"; 
} 
+0

他感謝評論。不過,我想根據他們的位置過濾項目。在某種觀點上,我想展示前20名,另一種觀點我想展示所有人。我可以根據這個過濾嗎? – Rui 2012-03-09 14:32:31

+0

@Rui我不知道「根據他們的位置過濾」的意思。如果你可以定義它;你可以編碼它。你是否使用相同的dataProvider爲兩個單獨的列表? – JeffryHouser 2012-03-09 14:51:27

+0

我已經按日期篩選項目。在一個國家,我希望我的清單能夠列出前20個項目,並在其他州展示所有這些項目。 – Rui 2012-03-09 18:04:09