private void UpdateColourSelection()
        {
            if (_accentButtons == null)
            {
                _accentButtons = new List <ImageButton>()
                {
                    SettingsPageGeneralColorOrange,
                    SettingsPageGeneralColorPurple,
                    SettingsPageGeneralColorBlue,
                    SettingsPageGeneralColorLime,
                    SettingsPageGeneralColorPink,
                };
            }
            foreach (var accentButton in _accentButtons)
            {
                accentButton.SetImageResource(Resource.Color.Transparent);
            }
            switch (AndroidColourThemeHelper.CurrentTheme)
            {
            case AndroidColorThemes.Orange:
                SettingsPageGeneralColorOrange.SetImageResource(Resource.Drawable.icon_ok);
                break;

            case AndroidColorThemes.Purple:
                SettingsPageGeneralColorPurple.SetImageResource(Resource.Drawable.icon_ok);
                break;

            case AndroidColorThemes.Blue:
                SettingsPageGeneralColorBlue.SetImageResource(Resource.Drawable.icon_ok);
                break;

            case AndroidColorThemes.Lime:
                SettingsPageGeneralColorLime.SetImageResource(Resource.Drawable.icon_ok);
                break;

            case AndroidColorThemes.Pink:
                SettingsPageGeneralColorPink.SetImageResource(Resource.Drawable.icon_ok);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            SettingsPageGeneralThemeChangeApply.Visibility =
                Converters.BoolToVisibility(Settings.SelectedTheme != MainActivity.CurrentTheme ||
                                            AndroidColourThemeHelper.CurrentTheme != MainActivity.CurrentAccent ||
                                            Settings.DarkThemeAmoled != MainActivity.IsAmoledApplied);
        }
        protected override void InitBindings()
        {
            SettingsPageGeneralStartPageRadioGroup.Check(Settings.DefaultMenuTab == "anime"
                ? SettingsPageGeneralRadioAnimeList.Id
                : SettingsPageGeneralRadioMangaList.Id);
            SettingsPageGeneralStartPageRadioGroup.SetOnCheckedChangeListener(new OnCheckedListener(i =>
            {
                Settings.DefaultMenuTab = i == SettingsPageGeneralRadioAnimeList.Id ? "anime" : "manga";
            }));
            //
            SettingsPageGeneralThemeRadioGroup.Check(Settings.SelectedTheme == 1
                ? SettingsPageGeneralRadioDarkTheme.Id
                : SettingsPageGeneralRadioLightTheme.Id);

            SettingsPageGeneralThemeRadioGroup.SetOnCheckedChangeListener(new OnCheckedListener(i =>
            {
                Settings.SelectedTheme = i == SettingsPageGeneralRadioDarkTheme.Id ? 1 : 0;
                SettingsPageGeneralThemeChangeApply.Visibility =
                    Converters.BoolToVisibility(Settings.SelectedTheme != MainActivity.CurrentTheme || AndroidColourThemeHelper.CurrentTheme != MainActivity.CurrentAccent);
            }));
            SettingsPageGeneralThemeChangeApply.SetOnClickListener(new OnClickListener(view =>
            {
                MainActivity.CurrentContext.Recreate();
                ViewModelLocator.NavMgr.ResetMainBackNav();
            }));

            //


            Bindings.Add(
                this.SetBinding(() => ViewModel.PullHigherQualityImages,
                                () => SettingsPageGeneralPullHigherSwitch.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.DisplaySeasonWithType,
                                () => SettingsPageGeneralSeasonSwitch.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.AutoDescendingSorting,
                                () => SettingsPageGeneralAutoSortSwitch.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.MangaFocusVolumes,
                                () => SettingsPageGeneralVolsImportantSwitch.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.HamburgerHideMangaSection,
                                () => SettingsPageGeneralHideHamburgerMangaSwitch.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.EnableSwipeToIncDec,
                                () => SettingsPageGeneralEnableSwipeSwitch.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.PreferEnglishTitles,
                                () => SettingsPageGeneralPreferEnglishTitleSwitch.Checked, BindingMode.TwoWay));

            Bindings.Add(
                this.SetBinding(() => ViewModel.MakeGridItemsSmaller,
                                () => SettingsPageGeneralSmallerGridItems.Checked, BindingMode.TwoWay));

            Bindings.Add(
                this.SetBinding(() => ViewModel.ReverseSwipingDirection,
                                () => SettingsPageGeneralReverseSwipeOrder.Checked, BindingMode.TwoWay));

            Bindings.Add(
                this.SetBinding(() => ViewModel.DarkThemeAmoled,
                                () => SettingsPageGeneralAmoledSwitch.Checked, BindingMode.TwoWay));

            Bindings.Add(
                this.SetBinding(() => ViewModel.DisplayScoreDialogAfterCompletion,
                                () => SettingsPageGeneralDisplayScoreDialog.Checked, BindingMode.TwoWay));
            //

            SettingsPageGeneralAnimeSortRadioGroup.Check(GetViewIdForAnimeSortOption(Settings.AnimeSortOrder));
            SettingsPageGeneralAnimeSortRadioGroup.SetOnCheckedChangeListener(new OnCheckedListener(i =>
            {
                Settings.AnimeSortOrder = GetSortOptionForViewId(i);
            }));

            SettingsPageGeneralMangaSortRadioGroup.Check(GetViewIdForMangaSortOption(Settings.MangaSortOrder));
            SettingsPageGeneralMangaSortRadioGroup.SetOnCheckedChangeListener(new OnCheckedListener(i =>
            {
                Settings.MangaSortOrder = GetSortOptionForViewId(i);
            }));

            SettingsPageGeneralAnimeSortDescendingSwitch.Checked        = Settings.IsSortDescending;
            SettingsPageGeneralAnimeSortDescendingSwitch.CheckedChange +=
                (sender, args) => Settings.IsSortDescending             = SettingsPageGeneralAnimeSortDescendingSwitch.Checked;

            SettingsPageGeneralMangaSortDescendingSwitch.Checked        = Settings.IsMangaSortDescending;
            SettingsPageGeneralMangaSortDescendingSwitch.CheckedChange +=
                (sender, args) => Settings.IsMangaSortDescending        = SettingsPageGeneralMangaSortDescendingSwitch.Checked;
            //

            SettingsPageGeneralWatchingViewModeSpinner.Adapter = ViewModel.DisplayModes.GetAdapter(GetTemplateDelegate);
            SettingsPageGeneralWatchingViewModeSpinner.SetSelection(ViewModel.DisplayModes.IndexOf(ViewModel.SelectedDefaultViewForWatching));
            SettingsPageGeneralWatchingViewModeSpinner.ItemSelected += (sender, args) =>
            {
                ViewModel.SelectedDefaultViewForWatching = (sender as Spinner).SelectedView.Tag.Unwrap <Tuple <AnimeListDisplayModes, string> >();
            };

            SettingsPageGeneralCompletedViewModeSpinner.Adapter = ViewModel.DisplayModes.GetAdapter(GetTemplateDelegate);
            SettingsPageGeneralCompletedViewModeSpinner.SetSelection(ViewModel.DisplayModes.IndexOf(ViewModel.SelectedDefaultViewForCompleted));
            SettingsPageGeneralCompletedViewModeSpinner.ItemSelected += (sender, args) =>
            {
                ViewModel.SelectedDefaultViewForCompleted = (sender as Spinner).SelectedView.Tag.Unwrap <Tuple <AnimeListDisplayModes, string> >();
            };

            SettingsPageGeneralOnHoldViewModeSpinner.Adapter = ViewModel.DisplayModes.GetAdapter(GetTemplateDelegate);
            SettingsPageGeneralOnHoldViewModeSpinner.SetSelection(ViewModel.DisplayModes.IndexOf(ViewModel.SelectedDefaultViewForOnHold));
            SettingsPageGeneralOnHoldViewModeSpinner.ItemSelected += (sender, args) =>
            {
                ViewModel.SelectedDefaultViewForOnHold = (sender as Spinner).SelectedView.Tag.Unwrap <Tuple <AnimeListDisplayModes, string> >();
            };

            SettingsPageGeneralDroppedViewModeSpinner.Adapter = ViewModel.DisplayModes.GetAdapter(GetTemplateDelegate);
            SettingsPageGeneralDroppedViewModeSpinner.SetSelection(ViewModel.DisplayModes.IndexOf(ViewModel.SelectedDefaultViewForDropped));
            SettingsPageGeneralDroppedViewModeSpinner.ItemSelected += (sender, args) =>
            {
                ViewModel.SelectedDefaultViewForDropped = (sender as Spinner).SelectedView.Tag.Unwrap <Tuple <AnimeListDisplayModes, string> >();
            };

            SettingsPageGeneralPtwViewModeSpinner.Adapter = ViewModel.DisplayModes.GetAdapter(GetTemplateDelegate);
            SettingsPageGeneralPtwViewModeSpinner.SetSelection(ViewModel.DisplayModes.IndexOf(ViewModel.SelectedDefaultViewForPlanned));
            SettingsPageGeneralPtwViewModeSpinner.ItemSelected += (sender, args) =>
            {
                ViewModel.SelectedDefaultViewForPlanned = (sender as Spinner).SelectedView.Tag.Unwrap <Tuple <AnimeListDisplayModes, string> >();
            };

            SettingsPageGeneralAllViewModeSpinner.Adapter = ViewModel.DisplayModes.GetAdapter(GetTemplateDelegate);
            SettingsPageGeneralAllViewModeSpinner.SetSelection(ViewModel.DisplayModes.IndexOf(ViewModel.SelectedDefaultViewForAll));
            SettingsPageGeneralAllViewModeSpinner.ItemSelected += (sender, args) =>
            {
                ViewModel.SelectedDefaultViewForAll = (sender as Spinner).SelectedView.Tag.Unwrap <Tuple <AnimeListDisplayModes, string> >();
            };


            //
            var filters = Enum.GetValues(typeof(AnimeStatus)).Cast <int>().Take(5).ToList();

            SettingsPageGeneralMangaFilerSpinner.Adapter = filters.GetAdapter(GetMangaTemplateDelegate);
            SettingsPageGeneralMangaFilerSpinner.SetSelection(filters.IndexOf(Settings.DefaultMangaFilter));
            SettingsPageGeneralMangaFilerSpinner.ItemSelected += (sender, args) =>
            {
                Settings.DefaultMangaFilter = (int)SettingsPageGeneralMangaFilerSpinner.SelectedView.Tag;
            };

            SettingsPageGeneralAnimeFilterSpinner.Adapter = filters.GetAdapter(GetAnimeTemplateDelegate);
            SettingsPageGeneralAnimeFilterSpinner.SetSelection(filters.IndexOf(Settings.DefaultAnimeFilter));
            SettingsPageGeneralAnimeFilterSpinner.ItemSelected += (sender, args) =>
            {
                Settings.DefaultAnimeFilter = (int)SettingsPageGeneralAnimeFilterSpinner.SelectedView.Tag;
            };

            SettingsPageGeneralDefaultAddedStatusSpinner.Adapter = filters.GetAdapter(GetAnimeTemplateDelegate);
            SettingsPageGeneralDefaultAddedStatusSpinner.SetSelection(filters.IndexOf((int)Settings.DefaultStatusAfterAdding));
            SettingsPageGeneralDefaultAddedStatusSpinner.ItemSelected += (sender, args) =>
            {
                Settings.DefaultStatusAfterAdding = (AnimeStatus)(int)SettingsPageGeneralDefaultAddedStatusSpinner.SelectedView.Tag;
            };
            //


            Bindings.Add(
                this.SetBinding(() => ViewModel.SetStartDateOnListAdd,
                                () => SettingsPageGeneralStartDateWhenAddCheckBox.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.SetStartDateOnWatching,
                                () => SettingsPageGeneralStartDateWhenWatchCheckBox.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.SetEndDateOnCompleted,
                                () => SettingsPageGeneralEndDateWhenCompleted.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.SetEndDateOnDropped,
                                () => SettingsPageGeneralEndDateWhenDropCheckBox.Checked, BindingMode.TwoWay));
            Bindings.Add(
                this.SetBinding(() => ViewModel.OverrideValidStartEndDate,
                                () => SettingsPageGeneralAllowDateOverrideCheckBox.Checked, BindingMode.TwoWay));
            //
            SettingsPageGeneralAirDayOffsetSlider.Progress = Settings.AirDayOffset + 3;
            SettingsPageGeneralAirDayOffsetTextView.Text   = (Settings.AirDayOffset).ToString();

            SettingsPageGeneralAirDayOffsetSlider.ProgressChanged += (sender, args) =>
            {
                Settings.AirDayOffset = SettingsPageGeneralAirDayOffsetSlider.Progress - 3;
                SettingsPageGeneralAirDayOffsetTextView.Text =
                    (SettingsPageGeneralAirDayOffsetSlider.Progress - 3).ToString();
            };

            SettingsPageGeneralAiringNotificationOffsetSlider.Progress = Settings.AiringNotificationOffset + 24;
            SettingsPageGeneralAiringNotificationOffsetTextView.Text   = Settings.AiringNotificationOffset.ToString();

            SettingsPageGeneralAiringNotificationOffsetSlider.ProgressChanged += (sender, args) =>
            {
                Settings.AiringNotificationOffset = SettingsPageGeneralAiringNotificationOffsetSlider.Progress - 24;
                SettingsPageGeneralAiringNotificationOffsetTextView.Text =
                    (SettingsPageGeneralAiringNotificationOffsetSlider.Progress - 24).ToString();
            };

            Bindings.Add(this.SetBinding(() => ViewModel.DarkThemeAmoled).WhenSourceChanges(UpdateColourSelection));



            SettingsPageGeneralColorOrange.Tag = (int)AndroidColorThemes.Orange;
            SettingsPageGeneralColorPurple.Tag = (int)AndroidColorThemes.Purple;
            SettingsPageGeneralColorBlue.Tag   = (int)AndroidColorThemes.Blue;
            SettingsPageGeneralColorLime.Tag   = (int)AndroidColorThemes.Lime;
            SettingsPageGeneralColorPink.Tag   = (int)AndroidColorThemes.Pink;

            var colorListener = new OnClickListener(view =>
            {
                AndroidColourThemeHelper.CurrentTheme = (AndroidColorThemes)(int)view.Tag;
                UpdateColourSelection();
            });

            SettingsPageGeneralColorOrange.SetOnClickListener(colorListener);
            SettingsPageGeneralColorPurple.SetOnClickListener(colorListener);
            SettingsPageGeneralColorBlue.SetOnClickListener(colorListener);
            SettingsPageGeneralColorLime.SetOnClickListener(colorListener);
            SettingsPageGeneralColorPink.SetOnClickListener(colorListener);
        }