代码之家  ›  专栏  ›  技术社区  ›  uzaysan

RecyclerView如何知道是否有5个项目要滚动?

  •  0
  • uzaysan  · 技术社区  · 7 年前

    我从互联网上加载数据,正在进行分页。

    我使用此代码加载更多数据:

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                if(!recyclerView.canScrollVertically(1)&&loading==false&&postson==false){
                    loading=true;
                    lastitem+=20;
                    loaddata(lastitem);
    
                }
            }
    
    
        });
    

    但这只在回收视图到达底部时有效,我认为这可能会混淆用户。 我想在剩下5个项目时加载更多数据。

    如何做到这一点?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Xenolion ariochdivij666    7 年前

    检查布局管理器的项目计数(使布局管理器全局化),可能是线性布局管理器,然后从中比较两个,如下所示:

        @Override
        public void onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
            super.onScrolled(recyclerView, dx, dy)
            if (!isRequesting) {
                int visiblePicturePosition = linearLayoutManager.findLastVisibleItemPosition()
                int totalItems = linearLayoutManager.getItemCount()
                if (totalItems - visiblePicturePosition <= 5) {
    
                    //Do what you want here
            }
        }