Apache flex Flex树展开和折叠

Apache flex Flex树展开和折叠,apache-flex,tree,Apache Flex,Tree,我创建了一个带有自定义treeitemrenderer的树,在每个标签旁边添加了一个文本输入框。我的数据提供程序是一个阵列集合 当我在输入框中输入值时,当我使用圆盘箭头展开或折叠树时,可以很好地看到值。当我尝试从mxml页面展开和折叠树时,出现了一个奇怪的问题,单击按钮使用以下代码展开和折叠树 问题是,当我展开或折叠树时,我在输入框中输入的值似乎在移动 例如,我在输入框1中输入了15。当我展开和折叠树时,15移动到另一个输入框,然后移动到另一个输入框,当我继续展开和折叠树时,它会移回输入的位置。

我创建了一个带有自定义treeitemrenderer的树,在每个标签旁边添加了一个文本输入框。我的数据提供程序是一个
阵列集合

当我在输入框中输入值时,当我使用圆盘箭头展开或折叠树时,可以很好地看到值。当我尝试从
mxml
页面展开和折叠树时,出现了一个奇怪的问题,单击按钮使用以下代码展开和折叠树

问题是,当我展开或折叠树时,我在输入框中输入的值似乎在移动

例如,我在输入框1中输入了15。当我展开和折叠树时,15移动到另一个输入框,然后移动到另一个输入框,当我继续展开和折叠树时,它会移回输入的位置。我还在学习Flex。我不确定发生了什么,这与
arraycollection
有关

任何帮助都将不胜感激。谢谢

private function expandTree():void{ 
  for (var i:int = 0; i < thisTree.dataProvider.length; i ++){ 
     thisTree.expandChildrenOf(thisTree.dataProvider[i], true) 
  } 
} 

private function collapseTree():void{ 
  for (var i:int = 0; i < thisTree.dataProvider.length; i ++){ 
       thisTree.expandChildrenOf(thisTree.dataProvider[i], false) 
  } 
} 
私有函数expandTree():void{
对于(var i:int=0;i
Flex项目渲染器是循环使用的,这就是导致您的数据像这样移动的原因。在项目渲染器中,我通常发现将数据强制转换为可绑定值对象并覆盖数据的setter非常有用

[Bindable]
private var myBindableValueObject:MyBindableValueObject;

override public function set data(v:Object):void
{
    if(v == data)
        return;
    myBindableValueObject = v as MyBindableValueObject;
    super.data = value;
    validateNow();
}

您需要将文本输入和标签的属性绑定到值对象中的值。这将确保在适当的位置显示正确的值。使用这种方法应该可以消除您遇到的奇怪现象。

我按照您的建议进行了尝试,但没有看到任何变化。我不确定我是否能听从你的建议。这是代码。谢谢

package
{ 
    import mx.collections.*;
    import mx.controls.Label;
    import mx.controls.TextInput;
    import mx.controls.listClasses.*;
    import mx.controls.treeClasses.*;

    [Bindable] 
    public class TestSetupTreeItemRenderer extends TreeItemRenderer {

        [Bindable]
        public var _numQuestion:TextInput;
        private var _numOfQuestionText:Label;
        private var _listData:TreeListData;
        [Bindable]
        public var tItem:TestSetupTreeItem;

        public function TestSetupTreeItemRenderer():void {
            super();
            mouseEnabled = false;                        
        }

        override protected function createChildren():void {
            super.createChildren();
            _numQuestion = new TextInput();
            _numQuestion.text = "0"; //default

            _numQuestion.width = 45;
            _numQuestion.height = 20;                        
            _numQuestion.restrict = "0123456789";
            addChild(_numQuestion);

            _numOfQuestionText = new Label();
            _numOfQuestionText.width = 60;
            _numOfQuestionText.height = 22;
            addChild(_numOfQuestionText);
        }

        override public function set data(value:Object):void {           
            if(value == data)        
                return;
            tItem= value as TestSetupTreeItem;  
            super.data = value;
            validateNow();            
        }

        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
            super.updateDisplayList(unscaledWidth,unscaledHeight);            
            if(super.data){                
                tItem = super.data as TestSetupTreeItem;
                this.label.width = 150;
                this.label.truncateToFit(null);                          
                this.label.multiline = true;                
                this.label.wordWrap = true;

                var tld:TreeListData = TreeListData(super.listData);

                this._numOfQuestionText.text = "of " + tItem.totalQuestionCount;             
                this._numOfQuestionText.x = 300;
                this._numOfQuestionText.y = super.label.y;                

                this._numQuestion.x = 200;
                this._numQuestion.y = super.label.y;
                this._numQuestion.editable = true;


                tItem.desiredQuestionCount = this._numQuestion.text;
            }          
        } 
     }
}

是的,现在它正在工作。我需要这样做;而不是updateDisplayList()中的tItem.desiredQuestionCount=this.\u numQuestion.text;谢谢