public void ReuseAll()
 {
     for (int i = 0; i < parent.childCount; i++)
     {
         GroupedReusableItem <TItemData> view = parent.GetChild(i).
                                                GetComponent <GroupedReusableItem <TItemData> >();
         ReuseItem(view);
     }
 }
 public void RefreshAll(IList <TItemData> value)
 {
     ReuseAll();
     for (int i = 0; i < value.Count; i++)
     {
         GroupedReusableItem <TItemData> view = GetItem(value[i].GetGroupId());
         view.transform.SetSiblingIndex(i);
         view.Refresh(value[i], i);
     }
 }
 protected void ReuseItem(GroupedReusableItem <TItemData> item)
 {
     if (item != null)
     {
         if (!GroupedReusableItems[item.GetGroupId()].Contains(item))
         {
             GroupedReusableItems[item.GetGroupId()].Enqueue(item);
             item.gameObject.SetActive(false);
         }
     }
 }
        protected bool TryGetItem(out GroupedReusableItem <TItemData> item, int typeIdx)
        {
            bool result = false;

            item = null;
            if (GroupedReusableItems.Count > 0)
            {
                if (GroupedReusableItems[typeIdx].Count > 0)
                {
                    item = GroupedReusableItems[typeIdx].Dequeue();
                    item.gameObject.SetActive(true);
                    result = true;
                }
            }
            return(result);
        }