void Replace(NotifyCollectionChangedEventArgs args)
        {
            var startIndex = args.NewStartingIndex > -1 ? args.NewStartingIndex : IndexOf(args.NewItems[0]);

            startIndex = AdjustPositionForHeader(startIndex);
            var newCount = args.NewItems.Count;

            if (newCount == args.OldItems.Count)
            {
                // We are replacing one set of items with a set of equal size; we can do a simple item or range
                // notification to the adapter
                if (newCount == 1)
                {
                    _notifier.NotifyItemChanged(this, startIndex);
                }
                else
                {
                    _notifier.NotifyItemRangeChanged(this, startIndex, newCount);
                }

                return;
            }

            // The original and replacement sets are of unequal size; this means that everything currently in view will
            // have to be updated. So we just have to use NotifyDataSetChanged and let the RecyclerView update everything
            _notifier.NotifyDataSetChanged();
        }
 public void NotifyItemChanged(IItemSource group, int localIndex)
 {
     localIndex = GetAbsolutePosition(group, localIndex);
     notifier.NotifyItemChanged(this, localIndex);
 }