protected override void OnPause() { base.OnPause(); if (IsHandlingException) { return; } // https://futurestud.io/tutorials/how-to-save-and-restore-the-scroll-position-and-state-of-a-android-listview if (BrowseViewState != null) { BrowseViewState.Dispose(); BrowseViewState = null; } if (_abandonViewState == false) { BrowseViewState = AbstractBrowseView.OnSaveInstanceState(); } if (ColumnCount == 1) { FirstVisiblePosition = AbstractBrowseView.FirstVisiblePosition; } FirstVisibleRow = AbstractBrowseView.FirstVisiblePosition / ColumnCount; PositionsInRow = ColumnCount; }
protected override void OnResume() { base.OnResume(); if (IsHandlingException) { return; } BrowseFooterFragment = FragmentManager.FindFragmentById <AndroidBrowseFooterFragment> ( Resource.Id.BrowseFooterFragment ); AbstractBrowseView = FindViewById <AbsListView>(BrowseViewId); BrowseViewAdapter = GetBrowseAdapter(); BrowseFooterFragment.ConfigureBrowsingFor ( AbstractBrowseView, getThumbnailWidth: () => { return(BrowseViewAdapter.GetThumbnailWidth()); }, viewTypeChanged: () => { ToggleBrowseActivity(); }, scaleTypeChanged: () => { BrowseViewAdapter.NotifyDataSetChanged(); } ); if (AbstractBrowseView.Adapter == null) { AbstractBrowseView.Adapter = BrowseViewAdapter; } if (BrowseViewState != null) { AbstractBrowseView.OnRestoreInstanceState(BrowseViewState); } else { TryRestoreFirstPosition(); } //_browseObjectsList.ChoiceMode = ChoiceMode.Multiple; //AbsListView.IMultiChoiceModeListener multiChoiceModeListener = new MultiChoiceModeListener(); //_browseObjectsList.SetMultiChoiceModeListener(multiChoiceModeListener); }
private void TryRestoreFirstPosition() { if (PositionsInRow == null) { return; } int firstPositionInRow = FirstVisibleRow * PositionsInRow.Value; int lastPositionInRow = firstPositionInRow + PositionsInRow.Value - 1; int firstVisiblePosition = ((FirstVisiblePosition < firstPositionInRow) || (lastPositionInRow < FirstVisiblePosition)) ? firstPositionInRow : FirstVisiblePosition; if (AbstractBrowseView.FirstVisiblePosition != firstVisiblePosition) { AbstractBrowseView.SetSelection(firstVisiblePosition); } }