コード例 #1
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            var item = _plainItems[position];

            if (item.IsHeader)
            {
                _bindHeaderViewHolderAction(holder, position, item.Key);
            }
            else
            {
                var isLast       = true;
                var nextPosition = position + 1;
                if (nextPosition > 0 && nextPosition < _plainItems.Count)
                {
                    var nextItem = _plainItems[nextPosition];
                    isLast = nextItem.IsHeader;
                }

                _bindViewHolderAction(holder, position, item.Item, isLast);
            }

            if (position == _plainItems.Count - 1)
            {
                LastItemRequested?.Invoke(this, EventArgs.Empty);
            }
        }
コード例 #2
0
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            var item = GetItemByIndex(indexPath);

            if (indexPath.Section == DataSource.Count() - 1 && indexPath.Row == DataSource.ElementAt(indexPath.Section).Count() - 1)
            {
                LastItemRequested?.Invoke(this, EventArgs.Empty);
            }

            return(GetItemCell(tableView, item, DataSource.ElementAt(indexPath.Section).ToList(), indexPath));
        }
コード例 #3
0
            public override void WillDisplayNodeForRowAtIndexPath(ASTableView tableView, NSIndexPath indexPath)
            {
                if (_source == null)
                {
                    var table = tableView as ASTableView;
                    _source = table.TableNode.DataSource as GroupedTableDataSource <DateTimeOffset, ChatMessageViewModel>;
                }

                var count = _source.DataSource[0].Count;

                if (indexPath.Section == _source.DataSource.Count - 1 && indexPath.Row == count - 1)
                {
                    LastItemRequested?.Invoke(this, EventArgs.Empty);
                }
            }
コード例 #4
0
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            var item = GetItemByIndex(indexPath);

            if (IsLastItem(indexPath))
            {
                LastItemRequested?.Invoke(this, EventArgs.Empty);
            }

            var itemCell     = tableView.DequeueReusableCell(GetCellName(indexPath), indexPath);
            var bindableView = (IBindableView)itemCell;

            bindableView.ReloadDataContext(item);

            return(itemCell);
        }
コード例 #5
0
 private void TryToRaiseLastItemRequest()
 {
     LastItemRequested?.Invoke(this, EventArgs.Empty);
 }