国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

5.8.只允許List的某一項可被選中

2024-04-27 13:51:57
字體:
供稿:網(wǎng)友
5.8.1問題
解析列表的dataProvider 以確保某些條目不能被用戶選擇
5.8.2解決方法
創(chuàng)建一個可以被設(shè)置在List 組件的一個子類的filterFunction 屬性, 使用mouseEventToItemRenderer 和finishKeySelection 通過filter 函數(shù)來檢查用戶的選擇并接受或不接受用戶的選擇.
5.8.3討論
為了控制用戶選擇列表中的某些條目,你需要控制這些條目,使用戶可使用鼠標(biāo)和鍵盤來選擇,鼠標(biāo)選擇相對來說更容易處理一些:若itemRenderer 包含你不想被選擇的數(shù)據(jù)則可以簡單地覆蓋mouseEventToItemRenderer 方法并返回null,鍵盤事件的處理更復(fù)雜是由于當(dāng)用戶試圖使用up 或down 鍵經(jīng)過不可選的條目,而你需要將列表中的下一個可選的條目發(fā)送給用戶。

為你的定制列表類中包含不可選條目的每一個實例來提供定制過濾,簡單地創(chuàng)建一個disabledFilterFunction 公有屬性,以便用戶可以傳遞一個值,創(chuàng)建成一個定制過濾,例如:
+展開
-ActionScript
public var disabledFilterFunction:Function;

覆蓋mouseEventToItemRenderer 方法的工作完成后的返回由MouseEvent 選中的itemRenderer, 而finishKeySelection 鍵盤選擇方法返回由keyboardEvent 選中的itemRenderer
+展開
-XML
<mx:List xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300">
<mx:Script>
<![CDATA[
import flash.events.MouseEvent;
import flash.ui.Keyboard;
import mx.controls.listClasses.IListItemRenderer;
import mx.controls.List;
public var disabledFilterFunction:Function;
private var selectionIsAbove:Boolean;
// we need to catch all mouse events that could change the index
override protected function mouseEventToItemRenderer(event:MouseEvent): IListItemRenderer{
var listItem:IListItemRenderer = super.mouseEventToItemRenderer(event);
if(listItem){
if(listItem.data){
if(disabledFilterFunction(listItem.data)){
return null;
}
}
}
return listItem;
}
//當(dāng)鍵盤選擇事件結(jié)束后,下面捕獲的所有鍵盤事件可以改變索引:
override protected function finishKeySelection():void {
super.finishKeySelection();
var i:int;
var uid:String;
var rowCount:int = listItems.length;
var partialRow:int = (rowInfo[rowCount-1].y +rowInfo[rowCount-1].height > listContent.height) ? 1 : 0;
var item:IListItemRenderer = listItems[caretIndex -verticalScrollPosition][0];
if(item) {
if(item.data) {
if(disabledFilterFunction(item.data)){
//下面使用disabledFilterFunction 屬性來決定特定的條目是否允許被選中,若當(dāng)前條目不允許被選中,代碼將定位到另一個可見的被激活的條目。
rowCount = rowCount - partialRow;
var currIndex:int = caretIndex -verticalScrollPosition;
if(selectionIsAbove){
// look up;
i = currIndex - 1;
while(i>0){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return ;
}
i--;
}
i = currIndex + 1
while(i<this.rowCount){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return;
}
i++;
}
else
{
// look down;
while(i<this.rowCount){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return;
}
i++;
}
while(i>0){
item = listItems[i][0];
if(!disabledFilterFunction(item.data)){
selectedIndex = i -verticalScrollPosition;
return;
}
i--;
}
}
}
}
}
}

]]>
</mx:Script>
</mx:List>
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新建县| 黎城县| 沂水县| 衡南县| 库尔勒市| 达日县| 桂林市| 淮滨县| 图木舒克市| 闽侯县| 砚山县| 九江市| 鄂尔多斯市| 桐柏县| 昭觉县| 麻栗坡县| 绩溪县| 化州市| 泌阳县| 容城县| 阿拉善右旗| 卫辉市| 潜江市| 延川县| 阿拉善左旗| 遵义县| 沿河| 治多县| 揭阳市| 正安县| 郎溪县| 镇赉县| 易门县| 钦州市| 崇礼县| 宣恩县| 新兴县| 苍南县| 启东市| 清流县| 霍林郭勒市|