private static void ActionBarUpdateItemsSource(ActionBar actionBar)
        {
            switch (actionBar.GetNavigationMode())
            {
            case ActionBarNavigationMode.List:
#if APPCOMPAT
                IItemsSourceAdapter sourceAdapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter);
#else
                IItemsSourceAdapter sourceAdapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter);
#endif
                if (sourceAdapter == null)
                {
                    sourceAdapter = ItemsSourceAdapter.Factory(actionBar, actionBar.ThemedContext, DataContext.Empty);
#if APPCOMPAT
                    actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter, sourceAdapter);
#else
                    actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter, sourceAdapter);
#endif
                    actionBar.SetListNavigationCallbacks(sourceAdapter, new ActionBarNavigationListener(actionBar));
                }
#if APPCOMPAT
                sourceAdapter.ItemsSource = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSource);
#else
                sourceAdapter.ItemsSource = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSource);
#endif
                break;

            case ActionBarNavigationMode.Standard:
#if APPCOMPAT
                actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, BindingExtensions.NullValue);
#else
                actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, BindingExtensions.NullValue);
#endif

                actionBar.SetListNavigationCallbacks(null, null);
#if APPCOMPAT
                actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator)?.SetItemsSource(null);
                var adapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter);
#else
                actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator)?.SetItemsSource(null);
                var adapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter);
#endif
                if (adapter != null)
                {
                    adapter.ItemsSource = null;
                }
                break;

            case ActionBarNavigationMode.Tabs:
#if APPCOMPAT
                actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator)?.SetItemsSource(actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSource));
#else
                actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator)?.SetItemsSource(actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSource));
#endif

                break;
            }
        }
            public bool OnNavigationItemSelected(int itemPosition, long itemId)
            {
                var adapter = ItemsSourceAdapter.Get(_actionBar);

                if (adapter == null)
                {
                    return(false);
                }
                ActionBarSelectedItemMember.SetValue(_actionBar, adapter.GetRawItem(itemPosition));
                return(true);
            }
Example #3
0
        private static void AutoCompleteTextViewItemsSourceChanged(AutoCompleteTextView sender, AttachedMemberChangedEventArgs <IEnumerable> args)
        {
            var listAdapter = sender.Adapter as IItemsSourceAdapter;

            if (listAdapter == null)
            {
                listAdapter    = ItemsSourceAdapter.Factory(sender, sender.Context, DataContext.Empty);
                sender.Adapter = listAdapter;
            }
            listAdapter.ItemsSource = args.NewValue;
        }
        private static void ActionBarSelectedItemChanged(ActionBar actionBar, AttachedMemberChangedEventArgs <object> args)
        {
            switch (actionBar.GetNavigationMode())
            {
            case ActionBarNavigationMode.List:
                var adapter = ItemsSourceAdapter.Get(actionBar);
                if (adapter == null || adapter.ItemsSource == null)
                {
                    return;
                }
                if (args.NewValue == null)
                {
                    args.Member.SetValue(actionBar, new[] { adapter.GetRawItem(actionBar.SelectedNavigationIndex) });
                }
                else
                {
                    actionBar.SetSelectedNavigationItem(adapter.GetPosition(args.NewValue));
                }
                break;

            case ActionBarNavigationMode.Tabs:
                var tabGenerator = ItemsSourceGeneratorBase.Get(actionBar) as ActionBarTabItemsSourceGenerator;
                if (tabGenerator == null)
                {
                    var tabValue = args.NewValue as ActionBar.Tab;
                    if (tabValue != null && tabValue.Position != actionBar.SelectedNavigationIndex)
                    {
                        tabValue.Select();
                    }
                }
                else
                {
                    if (args.NewValue == null)
                    {
                        object ctx = actionBar.SelectedNavigationIndex < 0 ? null : actionBar.SelectedTab;
                        if (ctx != null)
                        {
                            ctx = BindingServiceProvider.ContextManager.GetBindingContext(ctx).Value;
                        }
                        args.Member.SetValue(actionBar, new[] { ctx });
                    }
                    else
                    {
                        tabGenerator.SetSelectedItem(args.NewValue);
                    }
                }
                break;
            }
        }
        private static void ActionBarUpdateItemsSource(ActionBar actionBar)
        {
            switch (actionBar.GetNavigationMode())
            {
            case ActionBarNavigationMode.List:
                IItemsSourceAdapter sourceAdapter = ItemsSourceAdapter.Get(actionBar);
                if (sourceAdapter == null)
                {
                    sourceAdapter = ItemsSourceAdapter.Factory(actionBar, actionBar.ThemedContext, DataContext.Empty);
                    ItemsSourceAdapter.Set(actionBar, sourceAdapter);
                    actionBar.SetListNavigationCallbacks(sourceAdapter, new ActionBarNavigationListener(actionBar));
                }
                sourceAdapter.ItemsSource = ActionBarItemsSourceMember.GetValue(actionBar, null);
                break;

            case ActionBarNavigationMode.Standard:
                ActionBarSelectedItemMember.SetValue(actionBar, BindingExtensions.NullValue);
                actionBar.SetListNavigationCallbacks(null, null);
                var generator = ItemsSourceGeneratorBase.Get(actionBar);
                if (generator != null)
                {
                    generator.SetItemsSource(null);
                }
                var adapter = ItemsSourceAdapter.Get(actionBar);
                if (adapter != null)
                {
                    adapter.ItemsSource = null;
                }
                break;

            case ActionBarNavigationMode.Tabs:
                var tabGenerator = ItemsSourceGeneratorBase.Get(actionBar);
                if (tabGenerator != null)
                {
                    tabGenerator.SetItemsSource(ActionBarItemsSourceMember.GetValue(actionBar, null));
                }
                break;
            }
        }
Example #6
0
        private static void ViewGroupItemsSourceChanged(ViewGroup sender, AttachedMemberChangedEventArgs <IEnumerable> args)
        {
            var container = sender as AdapterView;

            if (container == null)
            {
                var sourceGenerator = ViewGroupItemsSourceGenerator.GetOrAdd(sender);
                if (sourceGenerator != null)
                {
                    sourceGenerator.SetItemsSource(args.NewValue);
                }
                return;
            }
            var adapter = GetAdapter(container) as IItemsSourceAdapter;

            if (adapter == null)
            {
                adapter = ItemsSourceAdapter.Factory(container, container.Context, DataContext.Empty);
                SetAdapter(container, adapter);
            }
            adapter.ItemsSource = args.NewValue;
        }