示例#1
0
        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;
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }