Beispiel #1
0
    void ClearQueue()
    {
        foreach (var kv in ListItemInfoQueueByPrefabName)
        {
            foreach (ListItemInfo info in kv.Value)
            {
                info.ListItem.Clear();
                ListItemRendererPool.Release(info.ListItem.gameObject);
            }
        }

        ListItemInfoQueueByPrefabName.Clear();
    }
Beispiel #2
0
    protected void InvalidateListItem(TYPE _data)
    {
        RectTransform   listItemRectTransform = null;
        ListItem <TYPE> listItem = null;

        GameObject prefab     = null;
        string     prefabName = _data.PrefabName;

        prefab = GetPrefab(prefabName);

        if (ListItemInfoQueueByPrefabName.ContainsKey(prefab.name) == false)
        {
            ListItemInfoQueueByPrefabName.Add(prefab.name, new Queue <ListItemInfo>());
        }

        var queue = ListItemInfoQueueByPrefabName[prefab.name];

        if (queue.Count < RenderedDataList.Count)
        {
            GameObject go = ListItemRendererPool.Get(prefab);

            listItemRectTransform = go.GetComponent <RectTransform>();
            listItemRectTransform.SetAnchor(ViewComponent.Origin);
            listItemRectTransform.SetParent(ViewComponent.Content, false);

            listItem = go.GetComponent <ListItem <TYPE> >();

            queue.Enqueue(new ListItemInfo()
            {
                RectTransform = listItemRectTransform, ListItem = listItem
            });
        }
        else
        {
            var info = queue.Dequeue();
            listItem = info.ListItem;
            listItemRectTransform = info.RectTransform;

            queue.Enqueue(info);
        }

        var anchoredPosition = GetListItemAnchoredPosition(_data);

        listItemRectTransform.anchoredPosition = anchoredPosition;
        listItemRectTransform.sizeDelta        = GetListItemSizeDelta(prefab.name);

        listItem.SetData(_data);
    }