egret记录:数据容器DataGroup与List的使用

class DataGroupDemo extends eui.UILayer {
    public constructor() {
        super();
    }
    //数据源
    private datas:eui.ArrayCollection;
    //数据容器
    private datagroup:eui.DataGroup;

    protected createChildren():void {
        //先创建一个数组
        var sourceArr:any[] = [];
        for (var i:number = 1; i < 15; i++){
            //给数据中添加一个含有"label"属性的对象
            sourceArr.push({label:"item_"+i});
        }
        //用ArrayCollection包装
        var myCollection:eui.ArrayCollection = new eui.ArrayCollection(sourceArr);
        this.datas = myCollection;

        //创建滚动视图
        let sc:eui.Scroller = new eui.Scroller();
        sc.width = 200;
        sc.height = 300;
        this.addChild(sc);
       
        // 创建数据容器 将数据容器添加到scroller中
        var dataGroup:eui.DataGroup = new eui.DataGroup();
        dataGroup.percentWidth = 100;
        dataGroup.percentHeight = 100;
        sc.addChild(dataGroup);
        sc.viewport = dataGroup;

        dataGroup.dataProvider = myCollection;
        dataGroup.itemRenderer = LabelRenderer;
        this.datagroup = dataGroup;

        let button:eui.Button = new eui.Button();
        button.x = 30;
        button.y = 500;
        this.addChild(button)

        button.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onClick,this);
    }


    private onClick(){
        this.datagroup.dataProvider.getItemAt(0).label = "XXXX";
        // 更新视图
        this.datas.itemUpdated(this.datas.getItemAt(0));
    }
}

点击按钮之后,会改变数据源中的一条数据的值。但是这里需要值得注意的是,如果你的这个数据源对应的item没有渲染,那么就不会马上更新视图,否则的话才会更新视图。才会调用datachange函数。

 

 

class LabelRenderer extends eui.ItemRenderer {
    private labelDisplay:eui.Label;
    public constructor(){
        super();
        this.touchChildren = true;
        this.labelDisplay = new eui.Label();
        this.addChild( this.labelDisplay );
    }
    protected dataChanged():void{
        //显示数据中的 label 值
        this.labelDisplay.text = this.data.label;
        console.log("datachanged");
        
    }
}

 

posted on 2021-08-26 11:26  谋生的日记本  阅读(572)  评论(0)    收藏  举报

导航