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); } }
private void OnItemClick(jQueryEvent e, IListItemView item) { Helper.Event.FireClick(item.Model); if (SelectionMode != ListSelectionMode.None) item.IsSelected = true; }
private void ClearSelection(IListItemView exclude) { foreach (IListItemView view in GetListItemViews()) { if (!Script.IsNullOrUndefined(view) && view != exclude) view.IsSelected = false; } }
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. }