移动应用程序上的Spark DataGrid处理滚动和选择项

时间:2011-12-15 14:21:33

标签: flex mobile datagrid event-handling flex-spark

我在移动应用程序上有一个spark数据网格,我设置了

interactionMode="touch"

并且dataGrid滚动很好,我在向它添加selectionChange eventListener时遇到了一些问题,因为滚动dataGrid会自动更改选择,而只是滚动它,绑定的函数将启动...

如何在选择索引之前添加touch dalay,所以如果我滚动网格,选择不会改变,只有当我按下项目而不滚动时它才会改变?

1 个答案:

答案 0 :(得分:1)

我使用解决方法解决了....

而是添加selectionChange eventListener,我使用mouseUpmouseDown来检查点击和发布之间的时间,如果发布时间小于点击加上一些dalay,我返回选择,否则不...

<s:DataGrid id="grigliaData"
   sortableColumns="false"
   rowHeight="100"
   interactionMode="touch"
   mouseDown="grigliaData_mouseDownHandler(event)"
   mouseUp="grigliaData_mouseUpHandler(event)"
   top="230" left="5" right="5" bottom="50"
   dataProvider="{listaEventi}" width="100%" height="100%"> 

  //AS Code 
        private var _lastClickEvent:int;
        protected function grigliaData_mouseDownHandler(event:MouseEvent):void
        {
            _lastClickEvent = getTimer();
        }

        protected function grigliaData_mouseUpHandler(event:MouseEvent):void
        {
            if (getTimer() < _lastClickEvent + 200) // 200 = Dalay
            {
                               // return selectedIndex
            }
        }

修改 我还添加了对mouseX和mouseY位置的检查,现在如果发布前的时间和位置的变化小于默认的dalay(时间/像素),网格会调度selectionChange ...