Ejemplo n.º 1
0
        public override UIView GetViewForHeader(UITableView tableView, nint section)
        {
            var headerCell = InitCell <TVHeader>(CellIdentifierHeader, tableView);

            var sec         = (int)section;
            var modelHeader = Items.ElementAtOrDefault(sec);

            OnBindHeader(headerCell, modelHeader, ItemExpandedState.ElementAtOrDefault(sec), sec);

            headerCell.ClickableViewForExpansion.OnClick(() =>
            {
                ParentRowClicked?.Invoke(tableView, new RowParentClickEventArgs <TItem>((int)section, modelHeader));

                if (ItemExpandedState.ElementAtOrDefault(sec))
                {
                    CollapseItem(sec);
                }
                else
                {
                    ExpandItem(sec);
                }
            });

            if (_listHeaderCells.ContainsKey(sec))
            {
                _listHeaderCells[sec] = headerCell as IExpandable;
            }
            else
            {
                _listHeaderCells.Add(sec, headerCell as IExpandable);
            }

            return(headerCell.ContentView);
        }
Ejemplo n.º 2
0
 public override nint RowsInSection(UITableView tableview, nint section)
 {
     if (!ItemExpandedState.ElementAtOrDefault((int)section))
     {
         return(0);
     }
     return(Items.ElementAtOrDefault((int)section)?.SubExpandItems?.Count ?? 0);
 }
Ejemplo n.º 3
0
        private void ExpandItem(int section)
        {
            // Return if current expanded item and item to expand are same.
            if (_singleExpandable && ItemExpandedState.Select((state, pos) => new Tuple <int, bool>(pos, state))
                .FirstOrDefault(arg => arg.Item2)?.Item1 == section)
            {
                return;
            }

            if (_singleExpandable)
            {
                for (var i = 0; i < ItemExpandedState.Count(); i++)
                {
                    if (ItemExpandedState[i])
                    {
                        CollapseItem(i);
                    }
                }
            }

            ItemExpandedState[section] = true;

            if (_listHeaderCells.TryGetValue(section, out var headerCell))
            {
                headerCell?.OnExpand();
            }

            var itemsInSection = (int)RowsInSection(TableView, section);

            if (itemsInSection <= 0)
            {
                return;
            }

            var rowsToAdd = new NSIndexPath[itemsInSection];

            for (var i = 0; i < itemsInSection; i++)
            {
                rowsToAdd[i] = NSIndexPath.FromRowSection(i, section);
            }

            TableView.InsertRows(rowsToAdd, UITableViewRowAnimation.None);
        }