private void UpdateItemContentsBetweenIndices(int topIndex, int bottomIndex)
        {
            for (int i = topIndex; i <= bottomIndex; i++)
            {
                RecycledListItem item = items[i];

                item.Position = i;
                adapter.SetItemContent(item);
            }
        }
        private void DestroyItemsBetweenIndices(int topIndex, int bottomIndex)
        {
            for (int i = topIndex; i <= bottomIndex; i++)
            {
                RecycledListItem item = items[i];

                item.gameObject.SetActive(false);
                pooledItems.Push(item);
            }
        }
        public void OnItemClicked(RecycledListItem item)
        {
            if (currentlySelectedItem != null)
            {
                currentlySelectedItem.IsSelected = false;
            }

            currentlySelectedItem            = (ObjectReferencePickerItem)item;
            currentlySelectedObject          = currentlySelectedItem.Reference;
            currentlySelectedItem.IsSelected = true;

            if (onReferenceChanged != null)
            {
                onReferenceChanged(currentlySelectedItem.Reference);
            }
        }
        public void SetItemContent(RecycledListItem item)
        {
            ObjectReferencePickerItem it = (ObjectReferencePickerItem)item;

            it.SetContent(filteredReferences[it.Position]);

            if (it.Reference == currentlySelectedObject)
            {
                it.IsSelected         = true;
                currentlySelectedItem = it;
            }
            else
            {
                it.IsSelected = false;
            }

            it.Skin = Skin;
        }