public int getIndexFromView(IListItemView view)
    {
        int length = visibleObjs.Count;

        for (int i = 0; i < length; ++i)
        {
            if (visibleObjs[i] != null && visibleObjs[i].view == view)
            {
                return(visibleObjs[i].index);
            }
        }
        return(-1);
    }
    /// <summary>
    /// Creates a new list item to be positioned in the list.
    /// </summary>
    private void GenerateListItem(int index, float position, bool topItem)
    {
        if (itemRendererFactory == null)
        {
            Debug.LogError("Item Renderer Factory is not set!");
            return;
        }

        int          itemType     = onGetItemType(index);
        ListItemInfo listItemInfo = GetPooledObj(itemType);

        // Get the list items object and set up some parameters
        listItemInfo.index = index;
        IListItemView view = listItemInfo.view;

        if (listItemInfo.obj == null)
        {
            listItemInfo.obj = itemRendererFactory(index, content);
            Assert.IsNotNull(listItemInfo.obj);
            view             = listItemInfo.obj.GetComponent <IListItemView>();
            view.OnSelected += OnSelectedItemBroadcast;
        }

        Assert.IsNotNull(view);
        Assert.IsNotNull(dataProvider);
        Assert.IsTrue(index >= 0 && index < dataProvider.Count, "DataProvider index is out of range!");

        view.isSelected   = (index == _isSelectedIndex);
        view.viewData     = dataProvider[index];
        listItemInfo.view = view;


        listItemInfo.obj.SetActive(true);
        listItemInfo.obj.transform.SetParent(content, false);

        SetupRectTransform(listItemInfo.obj.transform as RectTransform);

        visibleObjs.Add(listItemInfo);

        if (!CanvasUpdateRegistry.IsRebuildingLayout())
        {
            Canvas.ForceUpdateCanvases();
        }

        PositionListItem(listItemInfo, position, topItem);

        UpdateListItems();
    }
    private void OnSelectedItemBroadcast(IListItemView view, bool isSelected)
    {
        if (isSelected)
        {
            int index = getIndexFromView(view);
            if (index >= 0)
            {
                _isSelectedIndex = index;
            }
        }
        else
        {
            _isSelectedIndex = -1;
        }

        if (onSelectedItem != null)
        {
            onSelectedItem(_isSelectedIndex, isSelected);
        }
    }
예제 #4
0
 private void OnItemClick(jQueryEvent e, IListItemView item)
 {
     Helper.Event.FireClick(item.Model);
     if (SelectionMode != ListSelectionMode.None) item.IsSelected = true;
 }
예제 #5
0
 private void ClearSelection(IListItemView exclude)
 {
     foreach (IListItemView view in GetListItemViews())
     {
         if (!Script.IsNullOrUndefined(view) && view != exclude) view.IsSelected = false;
     }
 }
예제 #6
0
        private void SelectItem(IListItemView item)
        {
            // Setup initial conditions.
            if (Script.IsNullOrUndefined(item)) return;

            // Update the selection.
            ClearSelection(item);
            item.IsSelected = true; // NB: The model is updated as well because the View uses a PropertRef to the model's property behind the scenes.
        }