void ClearQueue() { foreach (var kv in ListItemInfoQueueByPrefabName) { foreach (ListItemInfo info in kv.Value) { info.ListItem.Clear(); ListItemRendererPool.Release(info.ListItem.gameObject); } } ListItemInfoQueueByPrefabName.Clear(); }
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); }