Пример #1
0
    public void OnValueChange(Vector2 pos)
    {
        int index = GetPosIndex();

        if (position != index && index > -1)
        {
            position = index;
            for (int i = itemList.Count; i > 0; i--)
            {
                BaseAdapterItem <T> item = itemList[i - 1];
                if (item.Index < index || (item.Index >= index + viewCount))
                {
                    itemList.Remove(item);
                    unUsedQueue.Enqueue(item);
                }
            }
            for (int i = position; i < position + viewCount; i++)
            {
                if (i < 0)
                {
                    continue;
                }
                if (i > dataCount - 1)
                {
                    continue;
                }
                bool isOk = false;
                foreach (BaseAdapterItem <T> item in itemList)
                {
                    if (item.Index == i)
                    {
                        isOk = true;
                        UpdateItem(i, item);
                    }
                }
                if (isOk)
                {
                    continue;
                }
                CreateItem(i);
            }
        }
    }
Пример #2
0
 private void UpdateItem(int index, BaseAdapterItem <T> itemBase)
 {
     itemBase.Index = index;
     itemBase.SetData(datas[index], otherParam);
 }