private async void AnimeListOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
        {
            if (propertyChangedEventArgs.PropertyName == nameof(ViewModelLocator.AnimeList.AnimeGridItems))
            {
                if (ViewModelLocator.AnimeList.AnimeGridItems != null)
                {
                    _animeListItemsAdapter = new AnimeListItemsAdapter(Activity,
                        Resource.Layout.AnimeGridItem, ViewModelLocator.AnimeList.AnimeGridItems,
                        (model, view) =>
                            new AnimeGridItemBindingInfo(view, model)
                            {
                                OnItemClickAction = AnimeListPageGridViewOnItemClick
                            });
                    AnimeListPageGridView.Adapter = _animeListItemsAdapter;
                    _gridViewColumnHelper = new GridViewColumnHelper(AnimeListPageGridView);
                    if (_prevArgs != null)
                    {
                        var pos = _prevArgs.SelectedItemIndex;
                        await Task.Delay(300);
                        AnimeListPageGridView.RequestFocusFromTouch();
                        AnimeListPageGridView.SetSelection(pos);
                        AnimeListPageGridView.RequestFocus();
                        _prevArgs = null;
                    }
                    AnimeListPageListView.Adapter = null;
                    AnimeListPageCompactListView.Adapter = null;
                }
            }
            else if (propertyChangedEventArgs.PropertyName == nameof(ViewModelLocator.AnimeList.AnimeListItems))
            {
                if (ViewModelLocator.AnimeList.AnimeListItems != null)
                {
                    _animeListItemsAdapter = new AnimeListItemsAdapter(Activity,
                        Resource.Layout.AnimeListItem, ViewModelLocator.AnimeList.AnimeListItems,(model, view) => new AnimeListItemBindingInfo(view,model)
                        {
                            OnItemClickAction = AnimeListPageGridViewOnItemClick
                        });
                    AnimeListPageListView.Adapter = _animeListItemsAdapter;
                    if (_prevArgs != null)
                    {
                        AnimeListPageListView.SmoothScrollToPosition(_prevArgs.SelectedItemIndex);
                        _prevArgs = null;
                    }
                    AnimeListPageGridView.Adapter = null;
                    AnimeListPageCompactListView.Adapter = null;
                }
            }
            else if (propertyChangedEventArgs.PropertyName == nameof(ViewModelLocator.AnimeList.AnimeCompactItems))
            {
                if (ViewModelLocator.AnimeList.AnimeCompactItems != null)
                {
                    //AnimeListPageCompactListView.Adapter = new AnimeListItemsAdapter(Context as Activity,
                    //    Resource.Layout.AnimeGridItem, ViewModelLocator.AnimeList.AnimeCompactItems);

                    AnimeListPageListView.Adapter = null;
                    AnimeListPageGridView.Adapter = null;
                }
            }
            else if(propertyChangedEventArgs.PropertyName == nameof(ViewModel.DisplayMode))
            {
                switch (ViewModel.DisplayMode)
                {
                    case AnimeListDisplayModes.IndefiniteList:
                        AnimeListPageListView.Visibility = ViewStates.Visible;

                        AnimeListPageGridView.Visibility = ViewStates.Gone;
                        AnimeListPageCompactListView.Visibility = ViewStates.Gone;
                        break;
                    case AnimeListDisplayModes.IndefiniteGrid:
                        AnimeListPageGridView.Visibility = ViewStates.Visible;

                        AnimeListPageListView.Visibility = ViewStates.Gone;
                        AnimeListPageCompactListView.Visibility = ViewStates.Gone;
                        break;
                    case AnimeListDisplayModes.IndefiniteCompactList:
                        AnimeListPageCompactListView.Visibility = ViewStates.Visible;

                        AnimeListPageListView.Visibility = ViewStates.Gone;
                        AnimeListPageGridView.Visibility = ViewStates.Gone;
                        break;
                }
            }
        }
        private async void AnimeListOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
        {
            if (propertyChangedEventArgs.PropertyName == nameof(ViewModelLocator.AnimeList.AnimeGridItems))
            {
                if (ViewModelLocator.AnimeList.AnimeGridItems != null)
                {
                    _animeListItemsAdapter = new AnimeListItemsAdapter(Activity,
                                                                       Resource.Layout.AnimeGridItem, ViewModelLocator.AnimeList.AnimeGridItems,
                                                                       (model, view, fling) =>
                                                                       new AnimeGridItemBindingInfo(view, model, fling)
                    {
                        OnItemClickAction = AnimeListPageGridViewOnItemClick
                    });
                    AnimeListPageGridView.Adapter = _animeListItemsAdapter;
                    _gridViewColumnHelper         = new GridViewColumnHelper(AnimeListPageGridView);
                    if (_prevArgs != null)
                    {
                        var pos = _prevArgs.SelectedItemIndex;
                        await Task.Delay(300);

                        AnimeListPageGridView.RequestFocusFromTouch();
                        AnimeListPageGridView.SetSelection(pos);
                        AnimeListPageGridView.RequestFocus();
                        _prevArgs = null;
                    }

                    AnimeListPageGridView.MakeFlingAware();

                    SwipeRefreshLayout.ScrollingView = AnimeListPageGridView;

                    AnimeListPageListView.Adapter        = null;
                    AnimeListPageCompactListView.Adapter = null;
                }
            }
            else if (propertyChangedEventArgs.PropertyName == nameof(ViewModelLocator.AnimeList.AnimeListItems))
            {
                if (ViewModelLocator.AnimeList.AnimeListItems != null)
                {
                    _animeListItemsAdapter = new AnimeListItemsAdapter(Activity,
                                                                       Resource.Layout.AnimeListItem, ViewModelLocator.AnimeList.AnimeListItems, (model, view, fling) => new AnimeListItemBindingInfo(view, model, fling)
                    {
                        OnItemClickAction = AnimeListPageGridViewOnItemClick
                    });
                    AnimeListPageListView.Adapter = _animeListItemsAdapter;
                    if (_prevArgs != null)
                    {
                        AnimeListPageListView.SmoothScrollToPosition(_prevArgs.SelectedItemIndex);
                        _prevArgs = null;
                    }

                    AnimeListPageListView.MakeFlingAware();

                    SwipeRefreshLayout.ScrollingView = AnimeListPageListView;

                    AnimeListPageGridView.Adapter        = null;
                    AnimeListPageCompactListView.Adapter = null;
                }
            }
            else if (propertyChangedEventArgs.PropertyName == nameof(ViewModelLocator.AnimeList.AnimeCompactItems))
            {
                if (ViewModelLocator.AnimeList.AnimeCompactItems != null)
                {
                    //AnimeListPageCompactListView.Adapter = new AnimeListItemsAdapter(Context as Activity,
                    //    Resource.Layout.AnimeGridItem, ViewModelLocator.AnimeList.AnimeCompactItems);

                    SwipeRefreshLayout.ScrollingView = AnimeListPageCompactListView;

                    AnimeListPageListView.Adapter = null;
                    AnimeListPageGridView.Adapter = null;
                }
            }
            else if (propertyChangedEventArgs.PropertyName == nameof(ViewModel.DisplayMode))
            {
                switch (ViewModel.DisplayMode)
                {
                case AnimeListDisplayModes.IndefiniteList:
                    AnimeListPageListView.Visibility = ViewStates.Visible;

                    AnimeListPageGridView.Visibility        = ViewStates.Gone;
                    AnimeListPageCompactListView.Visibility = ViewStates.Gone;
                    break;

                case AnimeListDisplayModes.IndefiniteGrid:
                    AnimeListPageGridView.Visibility = ViewStates.Visible;

                    AnimeListPageListView.Visibility        = ViewStates.Gone;
                    AnimeListPageCompactListView.Visibility = ViewStates.Gone;
                    break;

                case AnimeListDisplayModes.IndefiniteCompactList:
                    AnimeListPageCompactListView.Visibility = ViewStates.Visible;

                    AnimeListPageListView.Visibility = ViewStates.Gone;
                    AnimeListPageGridView.Visibility = ViewStates.Gone;
                    break;
                }
            }
        }