Exemple #1
0
    /// <summary>
    /// 刷新赋值列表 回滚到顶部
    /// </summary>
    /// <param 列表的元素的最大个数="count"></param>
    /// <param 委托:进行 单个元素的赋值 = "updateItem"></param>
    public void InitList(int count, UpdateListItemEvent updateItem)
    {
        InitData();
        //记录有多少个item
        m_nListCount     = count;
        m_TempUpdateItem = updateItem;
        m_Content.transform.localPosition = Vector2.zero;

        int sideCount = count / m_GroupCount + (count % m_GroupCount > 0 ? 1 : 0);

        if (m_LayoutType == LayoutType.Vertical)
        {
            //计算有多少行,用于计算出总高度
            m_fRectHeight = Mathf.Max(0, sideCount * m_fItemHeight + (sideCount - 1) * m_fOffsetY);
        }
        else
        {
            //计算有多少列,用于计算出总高度
            m_fRectWidth = Mathf.Max(0, sideCount * m_fItemWidth + (sideCount - 1) * m_fOffsetX);
        }
        m_Content.sizeDelta = new Vector2(m_fRectWidth, m_fRectHeight);
        //显示item的数量
        m_nShowCount  = Mathf.Min(count, m_nCreateCount);
        m_nStartIndex = 0;
        m_ItemIndexDic.Clear();

        for (int i = 0; i < m_nShowCount; i++)
        {
            Transform item = GetItem(i);
            SetItem(item, i);
        }
        //显示多少个
        ShowListCount(m_Content, m_nShowCount);
    }
Exemple #2
0
        public void Refresh(int count, UpdateListItemEvent updateItem)
        {
            m_updateItem = updateItem;
            rowSum       = count / columnCount + (count % columnCount > 0 ? 1 : 0);
            m_rectHeigh  = Mathf.Max(0, rowSum * itemHeight + (rowSum - 1) * offsetY);
            if (m_spreadIndex >= 0)
            {
                m_rectHeigh += spreadHeigh;
            }
            itemParent.sizeDelta = new Vector2(m_rectWidth, m_rectHeigh);
            m_listCount          = count;
            m_showCount          = Mathf.Min(count, m_createCount); //显示item的数量
            if (count == 0)
            {
                ShowListCount(itemParent, m_showCount);
                return;
            }

            dic_itemIndex.Clear();
            //计算起始的终止序号
            //--如果数量小于遮罩正常状态下能显示的总量
            if (count <= m_createCount)
            {
                m_startIndex = 0;
                m_endIndex   = count - 1;
            }
            else
            {
                m_startIndex = GetStartIndex(itemParent.localPosition.y);
                if (m_startIndex + m_createCount >= count)
                {
                    m_startIndex = count - m_createCount;
                    m_endIndex   = count - 1;
                }
                else
                {
                    m_endIndex = m_startIndex + m_createCount - 1;
                }
            }
            lastStartIndex = m_startIndex;
            if (m_endIndex < m_startIndex)
            {
                Debug.LogError("列表有问题!");
                return;
            }
            for (int i = m_startIndex; i <= m_endIndex; i++)
            {
                m_item = GetItem(i - m_startIndex);
                SetItem(m_item, i);
            }
            ShowListCount(itemParent, m_showCount);
            if (scrollBar != null)
            {
                scrollBar.size = m_maskSize.y / m_rectHeigh;
            }
        }
Exemple #3
0
 /// <summary>
 /// 生成列表 不回滚,继续往下浏览
 /// </summary>
 /// <param 列表的元素的最大个数="count"></param>
 /// <param 委托:进行 单个元素的赋值 = "updateItem"></param>
 public void Refresh(int count, UpdateListItemEvent updateItem)
 {
     m_TempUpdateItem    = updateItem;
     m_Content.sizeDelta = new Vector2(m_fRectWidth, m_fRectHeight);
     m_nListCount        = count;
     m_nShowCount        = Mathf.Min(count, m_nCreateCount); //显示item的数量
     m_ItemIndexDic.Clear();
     if (count == 0)
     {
         ShowListCount(m_Content, m_nShowCount);
         return;
     }
     //计算起始的终止序号
     //--如果数量小于遮罩正常状态下能显示的总量
     if (count <= m_nCreateCount)
     {
         m_nStartIndex = 0;
         m_nEndIndex   = count - 1;
     }
     else
     {
         if (m_LayoutType == LayoutType.Vertical)
         {
             m_nStartIndex = GetStartIndex(m_Content.localPosition.y);
         }
         else
         {
             m_nStartIndex = GetStartIndex(m_Content.localPosition.x);
         }
         if (m_nStartIndex + m_nCreateCount >= count)
         {
             m_nStartIndex = count - m_nCreateCount;
             m_nEndIndex   = count - 1;
         }
         else
         {
             m_nEndIndex = m_nStartIndex + m_nCreateCount - 1;
         }
     }
     m_nLastStartIndex = m_nStartIndex;
     if (m_nEndIndex < m_nStartIndex)
     {
         Debug.LogError("列表有问题!");
         return;
     }
     for (int i = m_nStartIndex; i <= m_nEndIndex; i++)
     {
         Transform item = GetItem(i - m_nStartIndex);
         SetItem(item, i);
     }
     ShowListCount(m_Content, m_nShowCount);
 }
Exemple #4
0
    /// <summary>
    /// 生成列表 不回滚,继续往下浏览
    /// </summary>
    /// <param 列表的元素的最大个数="count"></param>
    /// <param 委托:进行 单个元素的赋值 = "updateItem"></param>
    public void Refresh(int count, UpdateListItemEvent updateItem)
    {
        m_listCount  = count;
        m_updateItem = updateItem;
        columnSum    = count / rowCount + (count % rowCount > 0 ? 1 : 0);
        m_rectWidth  = Mathf.Max(0, columnSum * itemWidth + (columnSum - 1) * offsetX);

        itemParent.sizeDelta = new Vector2(m_rectWidth + 50, m_rectHeigh);
        m_showCount          = Mathf.Min(count, m_createCount); //显示item的数量
        dic_itemIndex.Clear();
        if (count == 0)
        {
            ShowListCount(itemParent, m_showCount);
            return;
        }
        //计算起始的终止序号
        //--如果数量小于遮罩正常状态下能显示的总量
        if (count <= m_createCount)
        {
            m_startIndex = 0;
            m_endIndex   = count - 1;
        }
        else
        {
            m_startIndex = GetStartIndex(itemParent.localPosition.x);
            if (m_startIndex + m_createCount >= count)
            {
                m_startIndex = count - m_createCount;
                m_endIndex   = count - 1;
            }
            else
            {
                m_endIndex = m_startIndex + m_createCount - 1;
            }
        }
        lastStartIndex = m_startIndex;
        if (m_endIndex < m_startIndex)
        {
            Debug.LogError("列表有问题!");
            return;
        }
        for (int i = m_startIndex; i <= m_endIndex; i++)
        {
            Transform item = GetItem(i - m_startIndex);
            SetItem(item, i);
        }
        ShowListCount(itemParent, m_showCount);
    }
Exemple #5
0
 /// <summary>
 /// 刷新赋值列表 回滚到顶部
 /// </summary>
 /// <param 列表的元素的最大个数="count"></param>
 /// <param 委托:进行 单个元素的赋值 = "updateItem"></param>
 public void InitList(int count, UpdateListItemEvent updateItem)
 {
     m_listCount  = count;                 //记录有多少个item
     m_updateItem = updateItem;
     itemParent.transform.localPosition = Vector2.zero;
     columnSum            = count / rowCount + (count % rowCount > 0 ? 1 : 0); //计算有多少行,用于计算出总高度
     m_rectWidth          = Mathf.Max(0, columnSum * itemWidth + (columnSum - 1) * offsetX);
     itemParent.sizeDelta = new Vector2(m_rectWidth, m_rectHeigh);
     m_showCount          = Mathf.Min(count, m_createCount); //显示item的数量
     m_startIndex         = 0;
     dic_itemIndex.Clear();
     for (int i = 0; i < m_showCount; i++)
     {
         Transform item = GetItem(i);
         SetItem(item, i);
     }
     ShowListCount(itemParent, m_showCount);         //显示多少个
 }
Exemple #6
0
 public void Init(int count, UpdateListItemEvent updateItem)
 {
     m_listCount  = count;                 //记录有多少个item
     m_updateItem = updateItem;
     itemParent.transform.localPosition = Vector2.zero;
     rowSum      = count / columnCount + (count % columnCount > 0 ? 1 : 0); //计算有多少行,用于计算出总高度
     m_rectHeigh = Mathf.Max(0, rowSum * itemHeight + (rowSum - 1) * offsetY);
     if (m_spreadIndex >= 0)
     {
         m_rectHeigh += spreadHeigh;
     }
     itemParent.sizeDelta = new Vector2(m_rectWidth, m_rectHeigh);
     m_showCount          = Mathf.Min(count, m_createCount); //显示item的数量
     m_startIndex         = 0;
     dic_itemIndex.Clear();
     //多选要重新清除一下,然后再设置
     if (selectType == eSelectType.Multi)
     {
         m_focusList.Clear();
     }
     for (int i = 0; i < m_showCount; i++)
     {
         Transform item = GetItem(i);
         SetItem(item, i);
     }
     ShowListCount(itemParent, m_showCount);         //显示多少个
     if (scrollBar != null)
     {
         scrollBar.size = m_maskSize.y / m_rectHeigh;
     }
     if (togSelectAll != null)
     {
         if (selectType == eSelectType.Single)
         {
             togSelectAll.gameObject.SetActive(false);
         }
         else
         {
             togSelectAll.gameObject.SetActive(count > 1);
         }
     }
     ToEdge();
 }
 public void initData(UpdateListItemEvent updateItem)
 {
     _updateItem = updateItem;
 }