protected void NotifyCollectionChanged(object sender, NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> e)
 {
     NSThreadExtensions.ExecuteOnMainThread(() =>
     {
         IosDataSourceHandler.Handle(_tableViewRef.Target, e);
     });
 }
Пример #2
0
        public void Handle(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> arg)
        {
            switch (arg.Action)
            {
            case NotifyCollectionChangedAction.Reset:
                HandleGroupsReset();
                break;

            case NotifyCollectionChangedAction.Replace:
                HandleGroupsReplace(arg);
                break;

            default:
                if (BatchAction == null)
                {
                    Update(arg);
                }
                else
                {
                    BatchAction.Invoke(() => Update(arg));
                }

                break;
            }
        }
Пример #3
0
 protected override void HandleGroupsRemove(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args)
 {
     foreach (var range in args.OldItemRanges)
     {
         Enumerable.Range(range.Index, range.OldItems.Count())
         .Apply(RemoveSection);
     }
 }
        public static void Handle <TKey, TItem>(
            UITableView tableView,
            NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args)
        {
            var handler = new IosTableObservableKeyGroupCollectionHandler <TKey, TItem>(tableView);

            handler.Handle(args);
        }
Пример #5
0
        protected override void HandleGroupsRemove(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args)
        {
            foreach (var sectionsRange in args.OldItemRanges)
            {
                int sectionIndex = sectionsRange.Index;

                foreach (var section in sectionsRange.OldItems)
                {
                    _collectionViewRef.Target?.DeleteSections(NSIndexSet.FromIndex(sectionIndex));

                    sectionIndex++;
                }
            }
        }
Пример #6
0
        protected override void HandleGroupsAdd(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args)
        {
            foreach (var sectionsRange in args.NewItemRanges)
            {
                int sectionIndex = sectionsRange.Index;

                foreach (var section in sectionsRange.NewItems)
                {
                    _tableViewRef.Target?.InsertSections(NSIndexSet.FromIndex(sectionIndex), UITableViewRowAnimation.Automatic);

                    sectionIndex++;
                }
            }
        }
Пример #7
0
        public static void Handle <TKey, TItem>(
            RecyclerView.Adapter adapter,
            IEnumerable <IGrouping <TKey, TItem> > dataSource,
            IList <FlatItem> flatMapping,
            bool withSectionHeader,
            bool withSectionFooter,
            NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args)
        {
            var handler = new DroidRecyclerObservableKeyGroupCollectionHandler <TKey, TItem>(
                adapter,
                dataSource,
                flatMapping,
                withSectionHeader,
                withSectionFooter);

            handler.Handle(args);
        }
Пример #8
0
        private void Update(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                HandleGroupsAdd(e);
                break;

            case NotifyCollectionChangedAction.Remove:
                HandleGroupsRemove(e);
                break;

            case NotifyCollectionChangedAction.Replace:
                HandleGroupsReplace(e);
                break;
            }

            if (e.GroupEvents != null)
            {
                foreach (var groupEvent in e.GroupEvents)
                {
                    switch (groupEvent.Arg.Action)
                    {
                    case NotifyCollectionChangedAction.Add:
                        HandleItemsAdd(groupEvent.GroupIndex, groupEvent.Arg);
                        break;

                    case NotifyCollectionChangedAction.Remove:
                        HandleItemsRemove(groupEvent.GroupIndex, groupEvent.Arg);
                        break;

                    case NotifyCollectionChangedAction.Reset:
                        HandleItemsReset(groupEvent.GroupIndex);
                        break;
                    }
                }
            }
        }
 private void CatchEvents(object sender, NotifyKeyGroupCollectionChangedEventArgs <TKey, TValue> e)
 {
     _events.Add(e);
 }
 protected virtual void NotifyCollectionChanged(object sender, NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> e)
 {
     BuildPlainList();
     NotifyOnMainThread();
 }
Пример #11
0
 protected abstract void HandleGroupsReplace(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args);
Пример #12
0
 protected override void HandleGroupsReplace(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args)
 {
     _collectionViewRef.Target?.ReloadData();
 }
Пример #13
0
 protected override void HandleGroupsReplace(NotifyKeyGroupCollectionChangedEventArgs <TKey, TItem> args)
 {
     _recyclerViewAdapterRef.Target?.NotifyDataSetChanged();
 }