当前位置: 首页 > 知识库问答 >
问题:

滚动时检测RecyclerView何时到达最底部位置

夏侯华彩
2023-03-14

我有这个代码为回收人员视图。

    recyclerView = (RecyclerView)rootview.findViewById(R.id.fabric_recyclerView);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.addItemDecoration(new RV_Item_Spacing(5));
    FabricAdapter fabricAdapter=new FabricAdapter(ViewAdsCollection.getFabricAdsDetailsAsArray());
    recyclerView.setAdapter(fabricAdapter);

我需要知道在滚动时RecyclerView何时到达最底部的位置。可能吗?如果是,怎么做?

共有3个答案

郭意
2023-03-14

只需在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
            }
        }
    };
公西天逸
2023-03-14

使用此代码避免重复调用

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);

            if (!recyclerView.canScrollVertically(1) && newState==RecyclerView.SCROLL_STATE_IDLE) {
                Log.d("-----","end");
                
            }
        }
    });
强志学
2023-03-14

还有一个简单的方法

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);

        if (!recyclerView.canScrollVertically(1)) {
            Toast.makeText(YourActivity.this, "Last", Toast.LENGTH_LONG).show();

        }
    }
});

方向整数:-1表示向上,1表示向下,0将始终返回false。

 类似资料:
  • 问题内容: 以下文章是否仍然是检测UITableView实例何时滚动到底部(在Swift中),还是自那以来已被更改(例如:改进)的公认方法? 谢谢。 问题答案: 试试这个 或者你可以这样找到

  • 问题内容: 我有一个“浮动工具箱”-的div 。效果很好。 但是,当在该框内滚动(使用鼠标滚轮)并到达底部或顶部时,父元素将“接管”“滚动请求”:工具箱后面的文档将滚动。 -这很烦人,而不是用户的“要求”。 我正在使用jQuery,并认为可以使用event.stoppropagation()停止此行为: 它确实输入了该函数,但是仍然会发生传播(文档滚动) 很难在SO(和Google)上搜索此主题,

  • 问题内容: 我有一个div框(称为“通量”),里面包含可变数量的内容。此divbox的溢出设置为auto。 现在,我想做的是,当使用滚动到此DIV框的底部时,将更多内容加载到页面中,我知道如何执行此操作(加载内容),但是我不知道如何检测用户何时滚动到div标签的底部?如果我想在整个页面上这样做,我会选择.scrollTop并将其从.height中减去。 但是我似乎无法在这里这样做? 我尝试从磁通量

  • 问题内容: 我有一个包含不同部分的网站。我正在使用segment.io来跟踪页面上的不同操作。如何检测用户是否滚动到div的底部?我尝试了以下操作,但似乎在页面上滚动后立即触发,而不是在到达div底部时触发。 问题答案: 您可以用来检查底部是否已被查看

  • 我正在做一个西班牙新闻应用程序,看这里: 这个应用程序的问题是,每当任何用户点击like、play audio或translate按钮时,recyclerView就会跳到顶部。 > 数据以片段形式从Firebase实时数据库中获取。请帮帮忙。 @override public View onCreateView(LayoutInfluater Influater,ViewGroup contain

  • 问题内容: 加载活动后,我想滚动到RecyclerView列表的底部。 引发关于RecyclerView中不受支持的异常,并且似乎没有任何作用。 在上面的代码块之后,我添加了 这不起作用。中有30个元素。 问题答案: 只需进行设置,以使LLM可以从头开始布局项目。 两者之间的区别在于,将视图设置为显示最后一个元素,布局方向将保持不变。(因此,在从左到右的水平Recycler视图中,将显示最后一个元