仓库上有一个magiclistview的分支,有一个雏形,算法是借鉴Cocos官方范例demo的SceneList.js。
目前只有垂直方向滑动,listview中的item必须是一个prefab。
使用时需要一个DataSource对象,实现Item的更新。
let DataSource = cc.Class({
array: null,
ctor() {
let array = [];
for(let i = 0; i < 100; i++) {
array.push(`测试文本 ${i}`);
}
this.array = array;
},
//需要实现onItemData这个方法,更新item内容
onItemData(item, index) {
item.getComponent(cc.Label).string = this.array[index];
},
//需要实现getCount这个方法,计算listview内容区域的高度
getCount() {
return this.array.length;
}
});
let uikiller = require('uikiller');
cc.Class({
extends: cc.Component,
onLoad () {
uikiller.bindComponent(this);
this._magicListView.$MagicListView.dataSource = new DataSource();
},
});
初始实例化Item的数量是根据MagicListView的高度计算出来的,以后会循环复用。
使用时需要将MagicListView配有一个prefab, 简单尝试的话将MagicListView.prefab拖到界面上即可
目前还比较丑陋,有需要的借鉴一下就是了。