void TryOpen()
    {
        if (_datas.Count == 0)
        {
            return;
        }
        ItemBaseInconsist item = GetItem();

        item.id = 0;
        float h = item.SetData(_datas[0]);

        item.cachedRectTransform.anchoredPosition = new Vector2(0.0f, 0.0f - constHeight);
        _contextTrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, _contextTrans.sizeDelta.y + h);
        _activeItems.Add(item);
        item.gameObject.SetActive(true);
    }
    bool TryAddUp()
    {
        int upId = _activeItems[0].id;

        if (upId == 0)
        {
            return(false);
        }
        ItemBaseInconsist item = GetItem();

        item.id = upId - 1;
        float h = item.SetData(_datas[upId - 1]);

        item.cachedRectTransform.anchoredPosition = new Vector2(0.0f, _activeItems[0].anchoredPosition.y + h);
        _activeItems.Insert(0, item);
        item.gameObject.SetActive(true);
        return(true);
    }
    bool TryAddDown()
    {
        int downId = _activeItems[_activeItems.Count - 1].id;

        if (downId == _datas.Count - 1)
        {
            return(false);
        }
        ItemBaseInconsist item = GetItem();

        item.id = downId + 1;
        float h = item.SetData(_datas[downId + 1]);

        item.cachedRectTransform.anchoredPosition = new Vector2(0.0f, _activeItems[downId].anchoredPosition.y - _activeItems[downId].height);
        if (_contextTrans.sizeDelta.y <= -item.anchoredPosition.y + h * 0.5f)
        {
            _contextTrans.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, _contextTrans.sizeDelta.y + h);
        }
        _activeItems.Add(item);
        item.gameObject.SetActive(true);
        return(true);
    }