【问题标题】:Notify when we scroll to last position in RecyclerView in Android当我们滚动到 Android 中 RecyclerView 中的最后一个位置时通知
【发布时间】:2017-04-10 09:47:00
【问题描述】:

我的应用有一个水平滚动的回收站视图。 当我滚动列表并到达最后一个位置时,我想触发另一个事件。

【问题讨论】:

  • 到目前为止你尝试过什么?你能发布你的代码吗?

标签: android scroll android-recyclerview position


【解决方案1】:

只需在您的 recyclerview 上实现 addOnScrollListener() 即可。然后在滚动监​​听器内部实现下面的代码。

RecyclerView.OnScrollListener mScrollListener = new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        if (mIsLoading)
            return;
        int visibleItemCount = mLayoutManager.getChildCount();
        int totalItemCount = mLayoutManager.getItemCount();
        int pastVisibleItems = mLayoutManager.findFirstVisibleItemPosition();
        if (pastVisibleItems + visibleItemCount >= totalItemCount) {
            //End of list
        }
    }
};

【讨论】:

    【解决方案2】:
     private RecyclerView.OnScrollListener nRecyclerViewOnScrollListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }
    
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            int visibleItemCount = notificationLayoutManager.getChildCount();
            int totalItemCount = notificationLayoutManager.getItemCount();
            int firstVisibleItemPosition = notificationLayoutManager.findFirstVisibleItemPosition();
            if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount) {
                nLoadMoreItems();
    
            }
        }
    };
    
    private void nLoadMoreItems() {
        if (defaultCurrentPage < defaultpageCount)
            layout_load_more_loadingNotification.setVisibility(View.VISIBLE);
        int pageCount = (defaultCurrentPage + 1);
       //fetch second page data
          }
    

    试试看

    【讨论】:

    • 谢谢,您可以在@Safal 下方查看我的更新答案
    【解决方案3】:

    看到所有答案后,我通过这样做解决了我的问题,

     private RecyclerView.OnScrollListener nRecyclerViewOnScrollListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (newState == 2) {
                try {
                    if (lastVisibleItemPosition + 1 == totalItemCount) {
                        //Write you code here
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    Log.i(TAG, e.getMessage());
                }
            }
        }
    
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            totalItemCount = mLayoutManager.getItemCount();
            lastVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition();
    
        }
    };
    

    将监听器添加到回收器视图

    recyclerView.addOnScrollListener(nRecyclerViewOnScrollListener);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-07
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      相关资源
      最近更新 更多