private AbsListView.IOnScrollListener CreateScrollListener()
        {
            TextView footerScrollText = Activity.FindViewById <TextView>
                                        (
                Resource.Id.FooterScrollText
                                        );

            string scrollTextFormat = GetString(Resource.String.ScrollTextFormat);

            AbsListView.IOnScrollListener scrollListener = new ScrollListener
                                                           (
                updateScroll: (firstVisibleItem,
                               visibleItemCount,
                               totalItemCount) =>
            {
                footerScrollText.Text = (visibleItemCount == 0)
                                          ? string.Empty
                                          : string.Format(scrollTextFormat,
                                                          firstVisibleItem + 1,
                                                          firstVisibleItem + visibleItemCount,
                                                          totalItemCount);
            }
                                                           );

            return(scrollListener);
        }
예제 #2
0
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            if (!IsInitialized)
            {
                base.OnViewCreated(view, savedInstanceState);

                Presenter.SourceChanged += PresenterSourceChanged;
                _adapter                 = new FeedAdapter <FeedPresenter>(Context, Presenter);
                _adapter.PostAction     += PostAction;
                _adapter.AutoLinkAction += AutoLinkAction;

                _logo.Click            += OnLogoClick;
                _browseButton.Click    += GoToBrowseButtonClick;
                _toolbar.OffsetChanged += OnToolbarOffsetChanged;

                _scrollListner = new ScrollListener();
                _scrollListner.ScrolledToBottom += LoadPosts;

                _refresher.Refresh += OnRefresh;

                _feedList.SetAdapter(_adapter);
                _feedList.SetLayoutManager(new LinearLayoutManager(Android.App.Application.Context));
                _feedList.AddOnScrollListener(_scrollListner);

                _postPager.SetClipToPadding(false);
                _postPager.SetPadding(Style.PostPagerMargin * 2, 0, Style.PostPagerMargin * 2, 0);
                _postPager.PageMargin              = Style.PostPagerMargin;
                _postPager.PageScrollStateChanged += PostPagerOnPageScrollStateChanged;
                _postPager.PageScrolled           += PostPagerOnPageScrolled;

                _postPagerAdapter                 = new PostPagerAdapter <FeedPresenter>(_postPager, Context, Presenter);
                _postPagerAdapter.PostAction     += PostAction;
                _postPagerAdapter.AutoLinkAction += AutoLinkAction;
                _postPagerAdapter.CloseAction    += CloseAction;

                _postPager.Adapter = _postPagerAdapter;
                _postPager.SetPageTransformer(false, _postPagerAdapter, (int)LayerType.None);

                _emptyQueryLabel.Typeface = Style.Light;
                _emptyQueryLabel.Text     = AppSettings.LocalizationManager.GetText(LocalizationKeys.EmptyCategory);

                _mainMessage.Text  = AppSettings.LocalizationManager.GetText(LocalizationKeys.Greeting);
                _hintMessage.Text  = AppSettings.LocalizationManager.GetText(LocalizationKeys.EmptyFeedHint);
                _browseButton.Text = AppSettings.LocalizationManager.GetText(LocalizationKeys.GoToBrowse);

                LoadPosts();
            }

            var postUrl = Activity?.Intent?.GetStringExtra(CommentsFragment.ResultString);

            if (!string.IsNullOrWhiteSpace(postUrl))
            {
                var count = Activity.Intent.GetIntExtra(CommentsFragment.CountString, 0);
                Activity.Intent.RemoveExtra(CommentsFragment.ResultString);
                Activity.Intent.RemoveExtra(CommentsFragment.CountString);
                var post = Presenter.FirstOrDefault(p => p.Url == postUrl);
                post.Children += count;
                _adapter.NotifyDataSetChanged();
            }
        }
예제 #3
0
        public override async void OnResume()
        {
            base.OnResume();

            if (Network.State != NetworkState.Disconnected)
            {
                historyList = await MeritMoneyBrain.GetHistory(Offset, BatchSize, type);

                LoadingPanel.Visibility = ViewStates.Gone;
            }
            else
            {
                LoadingPanel.Visibility   = ViewStates.Invisible;
                NoInternetText.Visibility = ViewStates.Visible;
            }

            Refresh.Refresh += History_Refresh;

            RecyclerViewManager = new LinearLayoutManager(this.Context);
            HistoryView.SetLayoutManager(RecyclerViewManager);
            RecyclerViewAdapter = new HistoryAdapter(historyList, this.Context, LastHistoryItemDate, users);
            HistoryView.SetAdapter(RecyclerViewAdapter);

            mScrollListener = new ScrollListener(RecyclerViewManager, historyList, type);
            HistoryView.AddOnScrollListener(mScrollListener);

            for (int i = 0; i < historyList.Count(); i++)
            {
                new CacheListItemImage(RecyclerViewAdapter, i, Application.Context).Execute(historyList[i]);
            }
        }
 public override void OnScroll(object sender, ScrollEventArgs e)
 {
     RequestExpandItems(e.FirstVisibleItem + e.VisibleItemCount);
     e.IsFirstRow = e.FirstVisibleItem <= 0;
     e.IsLastRow  = e.TotalItemCount * _desiredColumnCount >= StackList?.Count;
     ScrollListener?.OnScroll(sender, e);
     ScrollCommand?.Execute(scrollEventArgs);
 }
        private void BindCollection()
        {
            adapter = Vm.Images.GetRecyclerAdapter(BindViewHolder, Resource.Layout.Tmpl_SubredditThumbnail, ItemClicked);
            SubGalleryRecyclerView.SetAdapter(adapter);
            SubGalleryRecyclerView.ClearOnScrollListeners();
            var listener = new ScrollListener(Vm.Images);

            SubGalleryRecyclerView.AddOnScrollListener(listener);
        }
예제 #6
0
        private void BindCollection()
        {
            var layoutManager = new AutoFitStaggeredLayoutManager(180, StaggeredGridLayoutManager.Vertical, Context);

            GalleryRecyclerView.SetLayoutManager(layoutManager);
            var adapter = Vm.Images.GetRecyclerAdapter(BindViewHolder, Resource.Layout.Tmpl_GalleryThumbnail, ItemClicked);

            GalleryRecyclerView.SetAdapter(adapter);
            GalleryRecyclerView.ClearOnScrollListeners();
            var listener = new ScrollListener(Vm.Images);

            GalleryRecyclerView.AddOnScrollListener(listener);
        }
예제 #7
0
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            if (IsInitialized)
            {
                return;
            }

            base.OnViewCreated(view, savedInstanceState);
            _searchView.Hint = AppSettings.LocalizationManager.GetText(LocalizationKeys.SearchHint);
            _searchView.SetFilters(new IInputFilter[] { new TextInputFilter(TextInputFilter.TagFilter) });
            _tagsButton.Text      = AppSettings.LocalizationManager.GetText(LocalizationKeys.Tag);
            _peopleButton.Text    = AppSettings.LocalizationManager.GetText(LocalizationKeys.Users);
            _clearButton.Text     = AppSettings.LocalizationManager.GetText(LocalizationKeys.Clear);
            _emptyQueryLabel.Text = AppSettings.LocalizationManager.GetText(LocalizationKeys.EmptyQuery);

            _searchView.TextChanged += OnSearchViewOnTextChanged;

            _categories.SetLayoutManager(new LinearLayoutManager(Activity));
            _users.SetLayoutManager(new LinearLayoutManager(Activity));

            _searchFacade.UserFriendPresenter.SourceChanged += UserFriendPresenterSourceChanged;
            _searchFacade.TagsPresenter.SourceChanged       += TagsPresenterSourceChanged;
            _categoriesAdapter  = new TagsAdapter(_searchFacade.TagsPresenter);
            _usersSearchAdapter = new FollowersAdapter(Activity, _searchFacade.UserFriendPresenter);
            _categories.SetAdapter(_categoriesAdapter);
            _users.SetAdapter(_usersSearchAdapter);

            _scrollListner = new ScrollListener();
            _scrollListner.ScrolledToBottom += GetTags;
            _users.AddOnScrollListener(_scrollListner);

            _categoriesAdapter.Click         += OnClick;
            _usersSearchAdapter.UserAction   += OnClick;
            _usersSearchAdapter.FollowAction += Follow;
            _timer = new Timer(OnTimer);

            _searchView.Typeface    = Style.Regular;
            _clearButton.Typeface   = Style.Regular;
            _clearButton.Visibility = ViewStates.Gone;
            _clearButton.Click     += OnClearClick;
            _tagsButton.Click      += TagsClick;
            _peopleButton.Click    += PeopleClick;
            SwitchSearchType(false);
            _searchView.RequestFocus();

            ((BaseActivity)Activity).OpenKeyboard(_searchView);

            _emptyQueryLabel.Typeface   = Style.Light;
            _emptyQueryLabel.Visibility = ViewStates.Invisible;
        }
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            if (IsInitialized)
            {
                return;
            }

            base.OnViewCreated(view, savedInstanceState);

            _isFollowers         = Activity.Intent.GetBooleanExtra(IsFollowersExtra, false);
            Presenter.FollowType = _isFollowers ? FriendsType.Followers : FriendsType.Following;

            Presenter.SourceChanged += PresenterSourceChanged;

            var count = Activity.Intent.GetIntExtra(CountExtra, 0);

            _peopleCount.Text = AppSettings.LocalizationManager.GetText(LocalizationKeys.PeopleText, count);
            _username         = Activity.Intent.GetStringExtra(UsernameExtra) ?? AppSettings.User.Login;

            _backButton.Visibility = ViewStates.Visible;
            _backButton.Click     += GoBackClick;
            _switcher.Visibility   = ViewStates.Gone;
            _settings.Visibility   = ViewStates.Gone;
            _viewTitle.Text        = Presenter.FollowType.GetDescription();

            _viewTitle.Typeface   = Style.Semibold;
            _peopleCount.Typeface = Style.Regular;

            _adapter = new FollowersAdapter(Activity, Presenter);
            _adapter.FollowAction += Follow;
            _adapter.UserAction   += UserAction;

            var scrollListner = new ScrollListener();

            scrollListner.ScrolledToBottom += LoadItems;

            _followersList.SetAdapter(_adapter);
            _followersList.SetLayoutManager(new LinearLayoutManager(Activity));
            _followersList.AddOnScrollListener(scrollListner);

            _emptyQueryLabel.Typeface = Style.Light;
            _emptyQueryLabel.Text     = AppSettings.LocalizationManager.GetText(LocalizationKeys.EmptyCategory);

            LoadItems();
        }
예제 #9
0
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            if (IsInitialized)
            {
                return;
            }

            base.OnViewCreated(view, savedInstanceState);

            var count = Activity.Intent.GetIntExtra(FeedFragment.PostNetVotesExtraPath, 0);

            _peopleCount.Text = AppSettings.LocalizationManager.GetText(LocalizationKeys.PeopleText, count);

            _backButton.Visibility = ViewStates.Visible;
            _backButton.Click     += GoBackClick;
            _switcher.Visibility   = ViewStates.Gone;
            _settings.Visibility   = ViewStates.Gone;
            _viewTitle.Typeface    = Style.Semibold;
            _peopleCount.Typeface  = Style.Regular;

            _isLikers       = Activity.Intent.GetBooleanExtra(VotersType, true);
            _viewTitle.Text = AppSettings.LocalizationManager.GetText(_isLikers ? LocalizationKeys.Voters : LocalizationKeys.FlagVoters);

            _url = Activity.Intent.GetStringExtra(FeedFragment.PostUrlExtraPath);
            Presenter.SourceChanged += PresenterSourceChanged;
            Presenter.VotersType     =
                _isLikers ? Core.Models.Enums.VotersType.Likes : Core.Models.Enums.VotersType.Flags;
            _adapter               = new FollowersAdapter(Activity, Presenter);
            _adapter.UserAction   += OnClick;
            _adapter.FollowAction += OnFollow;
            _votersList.SetAdapter(_adapter);
            var scrollListner = new ScrollListener();

            scrollListner.ScrolledToBottom += LoadNext;
            _votersList.AddOnScrollListener(scrollListner);
            _votersList.SetLayoutManager(new LinearLayoutManager(Activity));

            _emptyQueryLabel.Typeface = Style.Light;
            _emptyQueryLabel.Text     = AppSettings.LocalizationManager.GetText(LocalizationKeys.EmptyCategory);

            LoadNext();
        }
예제 #10
0
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            if (!IsInitialized)
            {
                base.OnViewCreated(view, savedInstanceState);

                Presenter.SourceChanged += PresenterSourceChanged;
                _adapter                = new FeedAdapter <FeedPresenter>(Context, Presenter);
                _adapter.LikeAction    += LikeAction;
                _adapter.UserAction    += UserAction;
                _adapter.CommentAction += CommentAction;
                _adapter.VotersClick   += VotersAction;
                _adapter.PhotoClick    += FeedPhotoClick;
                _adapter.FlagAction    += FlagAction;
                _adapter.HideAction    += HideAction;
                _adapter.TagAction     += TagAction;

                _postPagerAdapter                = new PostPagerAdapter <FeedPresenter>(Context, Presenter);
                _postPagerAdapter.LikeAction    += LikeAction;
                _postPagerAdapter.UserAction    += UserAction;
                _postPagerAdapter.CommentAction += CommentAction;
                _postPagerAdapter.VotersClick   += VotersAction;
                _postPagerAdapter.PhotoClick    += PhotoClick;
                _postPagerAdapter.FlagAction    += FlagAction;
                _postPagerAdapter.HideAction    += HideAction;
                _postPagerAdapter.DeleteAction  += DeleteAction;
                _postPagerAdapter.TagAction     += TagAction;
                _postPagerAdapter.CloseAction   += CloseAction;

                _logo.Click            += OnLogoClick;
                _toolbar.OffsetChanged += OnToolbarOffsetChanged;

                _scrollListner = new ScrollListener();
                _scrollListner.ScrolledToBottom += LoadPosts;

                _refresher.Refresh += OnRefresh;

                _feedList.SetAdapter(_adapter);
                _feedList.SetLayoutManager(new LinearLayoutManager(Android.App.Application.Context));
                _feedList.AddOnScrollListener(_scrollListner);

                _postPager.SetClipToPadding(false);
                var pagePadding = (int)BitmapUtils.DpToPixel(20, Resources);
                _postPager.SetPadding(pagePadding, 0, pagePadding, 0);
                _postPager.PageMargin              = pagePadding / 2;
                _postPager.PageScrollStateChanged += PostPagerOnPageScrollStateChanged;
                _postPager.PageScrolled           += PostPagerOnPageScrolled;
                _postPager.Adapter = _postPagerAdapter;
                _postPager.SetPageTransformer(false, _postPagerAdapter, (int)LayerType.None);

                _emptyQueryLabel.Typeface = Style.Light;
                _emptyQueryLabel.Text     = Localization.Texts.EmptyQuery;

                LoadPosts();
            }

            var postUrl = Activity?.Intent?.GetStringExtra(CommentsFragment.ResultString);

            if (!string.IsNullOrWhiteSpace(postUrl))
            {
                var count = Activity.Intent.GetIntExtra(CommentsFragment.CountString, 0);
                Activity.Intent.RemoveExtra(CommentsFragment.ResultString);
                Activity.Intent.RemoveExtra(CommentsFragment.CountString);
                var post = Presenter.FirstOrDefault(p => p.Url == postUrl);
                post.Children += count;
                _adapter.NotifyDataSetChanged();
            }
        }
예제 #11
0
 public override void OnScrollStateChanged(object sender, ScrollState state)
 {
     scrollStateChangedEventArgs.ScrollState = state;
     ScrollStateChangedCommand?.Execute(scrollStateChangedEventArgs);
     ScrollListener?.OnScrollStateChanged(this, scrollStateChangedEventArgs);
 }
예제 #12
0
 public override void OnScrollStateChange(object sender, ScrollStateChangeEventArgs e)
 {
     ScrollListener?.OnScrollStateChange(sender, e);
     ScrollStateChangeCommand?.Execute(e);
 }