CocosCreator中没有自带的tableview插件,虽然样例中有listview,但是很多功能无法实现,比如:无法在指定位置插入数据,item的个数必须大于30等,所以我就按照自己的思路,实现了一个TableView插件。
我的思路是,根据scrollview移动的偏移量,算出显示在视图中的起始位置,然后对视图中的item进行刷新。
主要的代码:
protected freshShowItem() { let nShowIndex = this.getShowStartIndex(); for (let index = 0; index < this._nShowCount; index++) { let nItemIndex = nShowIndex + index; if (nItemIndex >= this._dataList.length) { //超出了下边界 break; } let nItemID = (nItemIndex + this._nItemCount) % this._nItemCount; let node = this._itemList[nItemID]; node.y = this.getItemPosY(nItemIndex); let ctrl = node.getComponent(this.getTableItemName()); let newData = this._dataList[nItemIndex]; if (newData != null && ctrl.getData() != newData) { ctrl.updateItem(nItemID, nItemIndex, this._dataList[nItemIndex]); } } }
实现效果:
代码地址: