CCFoldView - 折叠
代码创建方式
CCGUI -> FoldView - 折叠列表列表无需添加布局组件.
列表支持多个预制体同时混用.
预制体模版放在Content节点下.
列表套件支持无线需求扩展特殊需求及时询问.
private CCFoldView m_FoldView;
private readoly FoldItemCountHelper m_FoldItemCountHelper = new();
// 持久化数据应为一个二维数组
// 初始化折叠辅助器
m_FoldItemCountHelper.ResetItems(new List<int>
{
2,6,1,2,1,4,5,3
});
// 初始化折叠列表
m_FoldView.InitViews(OnGetItemByIndex); // 方式1
m_FoldView.InitViews(m_FoldItemCountHelper.GetTotalItemAndChildCount(), OnGetItemByIndex); // 方式2private LoopListViewItem2 OnGetItemByIndex(LoopListView2 listView, int index)
{
if (index < 0)
{
return null;
}
/*to check the index'th item is a TreeItem or a TreeChildItem.for example,
0 TreeItem0
1 TreeChildItem0_0
2 TreeChildItem0_1
3 TreeChildItem0_2
4 TreeChildItem0_3
5 TreeItem1
6 TreeChildItem1_0
7 TreeChildItem1_1
8 TreeChildItem1_2
9 TreeItem2
10 TreeChildItem2_0
11 TreeChildItem2_1
12 TreeChildItem2_2
the first column value is the param 'index', for example, if index is 1,
then we should return TreeChildItem0_0 to SuperScrollView, and if index is 5,
then we should return TreeItem1 to SuperScrollView
*/
var countData = m_FoldItemCountHelper.QueryTreeItemByTotalIndex(index);
if(countData == null) return null;
int itemIndex = countData.ItemIndex;
//var treeViewItemData = m_FoldDataSourceHelper.GetItemDataByIndex(itemIndex);
if (countData.IsChild(index) == false)// if is a TreeItem
{
//get a new TreeItem
LoopListViewItem2 item = listView.NewListViewItem("ItemPrefab1");
var head = item.GetComponent<FoldViewItemHeadDemo>();
head.Init();
head.ItemIndex = itemIndex;
head.SetClickCallBack(this.OnExpandClicked);
/* TreeViewItemHead itemScript = item.GetComponent<TreeViewItemHead>();
if (item.IsInitHandlerCalled == false)
{
item.IsInitHandlerCalled = true;
itemScript.Init();
itemScript.SetClickCallBack(this.OnExpandClicked);
}
//update the TreeItem's content
itemScript.mText.text = treeViewItemData.mName;
itemScript.SetItemData(treeItemIndex, countData.mIsExpand);*/
return item;
}
else // if is a TreeChildItem
{
//childIndex is from 0 to ChildCount.
//for example, TreeChildItem0_0 is the 0'th child of TreeItem0
//and TreeChildItem1_2 is the 2'th child of TreeItem1
int childIndex = countData.GetChildIndex(index);
Logger.Warning($"countData.ItemIndex => {countData.ItemIndex}, childIndex => {childIndex}, index => {index}");
//var itemData = treeViewItemData.GetItemChildDataByIndex(childIndex);
//if (itemData == null) return null;
//get a new TreeChildItem
LoopListViewItem2 item = listView.NewListViewItem("ItemPrefab2");
/*TreeViewItem itemScript = item.GetComponent<TreeViewItem>();
if (item.IsInitHandlerCalled == false)
{
item.IsInitHandlerCalled = true;
itemScript.Init();
}
//update the TreeChildItem's content
itemScript.SetItemData(itemData, treeItemIndex, childIndex);*/
return item;
}
}作者:阿波罗 创建时间:2024-03-20 16:25
最后编辑:阿波罗 更新时间:2024-06-11 18:25
最后编辑:阿波罗 更新时间:2024-06-11 18:25