代码创建方式
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);   // 方式2
private 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