public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
            {
                base.OnScrolled(recyclerView, dx, dy);


                if (LayoutManager == null)
                {
                    LayoutManager = (LinearLayoutManager)recyclerView.GetLayoutManager();
                }

                var visibleItemCount = recyclerView.ChildCount;
                var totalItemCount   = recyclerView.GetAdapter().ItemCount;

                var pastItems = LayoutManager.FindFirstVisibleItemPosition();

                if (visibleItemCount + pastItems + 6 < totalItemCount)
                {
                    return;
                }

                if (IsLoading)
                {
                    return;
                }

                LoadMoreEvent?.Invoke(this, null);
            }
Esempio n. 2
0
            public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
            {
                base.OnScrolled(recyclerView, dx, dy);

                var visibleItemCount  = recyclerView.ChildCount;
                var totalItemCount    = recyclerView.GetAdapter().ItemCount;
                var pastVisiblesItems = LayoutManager.FindFirstVisibleItemPosition();

                if ((visibleItemCount + pastVisiblesItems) >= totalItemCount && !IsLoading && dy > 0)
                {
                    LoadMoreEvent?.Invoke(this, null);
                }

                if (scrolledDistance > HIDE_THRESHOLD && controlsVisible)
                {
                    OnHide?.Invoke(this, null);
                    controlsVisible  = false;
                    scrolledDistance = 0;
                }

                else if (scrolledDistance < -HIDE_THRESHOLD && !controlsVisible)
                {
                    OnShow?.Invoke(this, null);
                    controlsVisible  = true;
                    scrolledDistance = 0;
                }

                if ((controlsVisible && dy > 0) || (!controlsVisible && dy < 0))
                {
                    scrolledDistance += dy;
                }
            }
Esempio n. 3
0
            public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
            {
                try
                {
                    if (LayoutManager == null)
                    {
                        LayoutManager = (LinearLayoutManager)recyclerView.GetLayoutManager();
                    }

                    var visibleItemCount = recyclerView.ChildCount;
                    var totalItemCount   = recyclerView.GetAdapter().ItemCount;

                    var pastItems = LayoutManager.FindFirstVisibleItemPosition();

                    if (visibleItemCount + pastItems + 10 < totalItemCount)
                    {
                        return;
                    }

                    if (IsLoading)
                    {
                        return;
                    }

                    LoadMoreEvent?.Invoke(this, null);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
Esempio n. 4
0
            public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
            {
                try
                {
                    base.OnScrolled(recyclerView, dx, dy);

                    var visibleItemCount = recyclerView.ChildCount;
                    var totalItemCount   = recyclerView.GetAdapter().ItemCount;

                    var pastVisibleItems = LayoutManager.FindFirstVisibleItemPosition();
                    if (pastVisibleItems == 0 && visibleItemCount != totalItemCount)
                    {
                        //Load More  from API Request
                        LoadMoreEvent?.Invoke(this, null);
                        //Start Load More messages From Database
                    }
                    else
                    {
                        if (SwipeRefreshLayout.Refreshing)
                        {
                            SwipeRefreshLayout.Refreshing = false;
                            SwipeRefreshLayout.Enabled    = false;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
Esempio n. 5
0
 public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
 {
     base.OnScrolled(recyclerView, dx, dy);
     if (!IsLoading)
     {
         IsLoading = true;
         var visibleItemCount  = recyclerView.ChildCount;
         var totalItemCount    = recyclerView.GetAdapter().ItemCount;
         var pastVisiblesItems = LayoutManager.FindFirstVisibleItemPosition();
         if (dy > 0 && Direction == ScrollDirection.DOWN) //check for scroll down
         {
             if (totalItemCount != 0
                 //&& pastVisiblesItems > 0
                 &&
                 (
                     RemainingItemsToTriggerFetch >= totalItemCount ||
                     (visibleItemCount + pastVisiblesItems + RemainingItemsToTriggerFetch) >= totalItemCount
                 ))
             {
                 LoadMoreEvent?.Invoke(this, null);
             }
         }
         else if (dy < 0 && Direction == ScrollDirection.UP)
         {
             if (pastVisiblesItems < RemainingItemsToTriggerFetch)
             {
                 LoadMoreEvent?.Invoke(this, null);
             }
         }
         IsLoading = false;
     }
 }
        public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
        {
            try
            {
                base.OnScrolled(recyclerView, dx, dy);

                var visibleItemCount = recyclerView.ChildCount;
                var totalItemCount   = recyclerView.GetAdapter().ItemCount;

                dynamic pastVisibleItems;
                if (LayoutManager is LinearLayoutManager managerLinear)
                {
                    pastVisibleItems = managerLinear.FindFirstVisibleItemPosition();
                }
                else if (LayoutManager is GridLayoutManager managerGrid)
                {
                    pastVisibleItems = managerGrid.FindFirstVisibleItemPosition();
                }
                else if (LayoutManager is StaggeredGridLayoutManager managerStaggeredGrid)
                {
                    int[] firstVisibleItemPositions = new int[SpanCount];
                    pastVisibleItems = managerStaggeredGrid.FindFirstVisibleItemPositions(firstVisibleItemPositions)[0];
                }
                else
                {
                    pastVisibleItems = LayoutManager.FindFirstVisibleItemPosition();
                }

                if (visibleItemCount + pastVisibleItems + 4 < totalItemCount)
                {
                    return;
                }

                if (IsLoading) //&& !recyclerView.CanScrollVertically(1)
                {
                    return;
                }

                //IsLoading = true;
                LoadMoreEvent?.Invoke(this, null);

                //if (visibleItemCount + pastVisibleItems + 8 >= totalItemCount)
                //{
                //    //Load More  from API Request
                //    if (IsLoading == false)
                //    {
                //        LoadMoreEvent?.Invoke(this, null);
                //        IsLoading = true;
                //    }
                //}
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
Esempio n. 7
0
        public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
        {
            base.OnScrolled(recyclerView, dx, dy);

            var visibleItemCount  = recyclerView.ChildCount;
            var totalItemCount    = recyclerView.GetAdapter().ItemCount;
            var pastVisiblesItems = _layoutManager?.FindFirstVisibleItemPosition();

            if (visibleItemCount + pastVisiblesItems >= totalItemCount)
            {
                LoadMoreEvent?.Invoke();
            }
        }
Esempio n. 8
0
        public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
        {
            base.OnScrolled(recyclerView, dx, dy);

            var visibleItemCount  = recyclerView.ChildCount;
            var pastVisiblesItems = this._layoutManager.FindFirstVisibleItemPosition();
            var totalItemCount    = recyclerView.GetAdapter().ItemCount;

            var lastItemPosition = visibleItemCount + pastVisiblesItems;

            if (this.lastLoaded != lastItemPosition && lastItemPosition >= totalItemCount)
            {
                LoadMoreEvent?.Invoke(this, null);
                this.lastLoaded = recyclerView.GetAdapter().ItemCount;
            }
        }
        public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
        {
            base.OnScrolled(recyclerView, dx, dy);

            var visibleItemCount  = recyclerView.ChildCount;
            var totalItemCount    = recyclerView.GetAdapter().ItemCount;
            var pastVisiblesItems = LayoutManager.FindFirstVisibleItemPosition();

            if (totalItemCount != 0
                //&& pastVisiblesItems > 0
                &&
                (
                    RemainingItemsToTriggerFetch >= totalItemCount ||
                    (visibleItemCount + pastVisiblesItems + RemainingItemsToTriggerFetch) >= totalItemCount
                ))
            {
                LoadMoreEvent?.Invoke(this, null);
            }
        }
        public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
        {
            base.OnScrolled(recyclerView, dx, dy);

            var visibleItemCount = recyclerView.ChildCount;
            var totalItemCount   = recyclerView.GetAdapter().ItemCount;
            var layoutManager    = recyclerView.GetLayoutManager() as LinearLayoutManager;

            var pastVisiblesItems = layoutManager?.FindFirstVisibleItemPosition();

            if (visibleItemCount > 0 && totalItemCount % StaticAppSettings.PullDataPageSize > 0)
            {
                return;
            }

            if (visibleItemCount + pastVisiblesItems >= totalItemCount - _loadWhenNItemsToTheEnd)
            {
                LoadMoreEvent?.Invoke(this, null);
            }
        }
Esempio n. 11
0
            public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
            {
                try
                {
                    base.OnScrolled(recyclerView, dx, dy);

                    var visibleItemCount = recyclerView.ChildCount;
                    var totalItemCount   = recyclerView.GetAdapter().ItemCount;

                    int[] firstVisibleItemPositions;

                    // Check if we're running on Android 5.0 or higher
                    if ((int)Build.VERSION.SdkInt < 23)
                    {
                        firstVisibleItemPositions = new int[2];
                    }
                    else
                    {
                        firstVisibleItemPositions = new int[3];
                    }

                    var firstVisibleItem =
                        ((StaggeredGridLayoutManager)recyclerView.GetLayoutManager()).FindFirstVisibleItemPositions(
                            firstVisibleItemPositions)[0];

                    var pastVisiblesItems = firstVisibleItem;
                    if (visibleItemCount + pastVisiblesItems + 8 >= totalItemCount)
                    {
                        if (IsLoading == false)
                        {
                            LoadMoreEvent?.Invoke(this, null);
                            IsLoading = true;
                        }
                    }
                }
                catch (Exception exception)
                {
                    Crashes.TrackError(exception);
                }
            }
            public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
            {
                try
                {
                    base.OnScrolled(recyclerView, dx, dy);

                    var visibleItemCount = recyclerView.ChildCount;
                    var totalItemCount   = recyclerView.GetAdapter().ItemCount;

                    var pastVisiblesItems = LayoutManager.FindFirstVisibleItemPosition();
                    if (visibleItemCount + pastVisiblesItems + 8 >= totalItemCount)
                    {
                        if (IsLoading == false)
                        {
                            LoadMoreEvent?.Invoke(this, null);
                            IsLoading = true;
                        }
                    }
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception);
                }
            }
Esempio n. 13
0
        public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
        {
            try
            {
                base.OnScrolled(recyclerView, dx, dy);

                var visibleItemCount = recyclerView.ChildCount;
                var totalItemCount   = recyclerView.GetAdapter().ItemCount;

                int pastVisibleItems;
                switch (LayoutManager)
                {
                case LinearLayoutManager managerLinear:
                    pastVisibleItems = managerLinear.FindFirstVisibleItemPosition();
                    break;

                default:
                    switch (LayoutManager)
                    {
                    case GridLayoutManager managerGrid:
                        pastVisibleItems = managerGrid.FindFirstVisibleItemPosition();
                        break;

                    case StaggeredGridLayoutManager managerStaggeredGrid:
                    {
                        int[] firstVisibleItemPositions = new int[SpanCount];
                        pastVisibleItems = managerStaggeredGrid.FindFirstVisibleItemPositions(firstVisibleItemPositions)[0];
                        break;
                    }

                    default:
                        pastVisibleItems = LayoutManager?.FindFirstVisibleItemPosition() ?? 0;
                        break;
                    }

                    break;
                }

                if (visibleItemCount + pastVisibleItems + 4 < totalItemCount)
                {
                    return;
                }

                switch (IsLoading)
                {
                //&& !recyclerView.CanScrollVertically(1)
                case true:
                    return;

                default:
                    //IsLoading = true;
                    LoadMoreEvent?.Invoke(this, null);

                    //if (visibleItemCount + pastVisibleItems + 8 >= totalItemCount)
                    //{
                    //    //Load More  from API Request
                    //    if (IsLoading == false)
                    //    {
                    //        LoadMoreEvent?.Invoke(this, null);
                    //        IsLoading = true;
                    //    }
                    //}
                    break;
                }
            }
            catch (Exception exception)
            {
                Methods.DisplayReportResultTrack(exception);
            }
        }