RecyclerView OnScrollListener() 问题

2023-11-26

我有大约 32 条 json 记录,我使用 RecyclerView 来显示它们,并且我已经实现了 OnScrollListener(...)

Question

我启动了一个 Activity,我获取了所有 32 条记录,现在当我滚动时,为什么我再次一次又一次地获取相同的 32 条记录,每当我滚动时,这是我的 OnScrollListener() 实现

public void initializeOnScrollForRecyclerView() {
        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

                int visibleItemCount = recyclerView.getLayoutManager().getChildCount();
                int totalItemCount = recyclerView.getLayoutManager().getItemCount();
                int pastVisiblesItems = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();

                if (!isLoading) {
                    if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
                        isLoading = true;
                        mPostPresenter.loadPosts(false);
                    }
                }
            }
        });
    }

实现似乎是正确的,但对于一种情况它失败了,请在 dy > 0 时尝试,如下所示(也将其放在 Activity 的 OnCreate 中):

    private boolean loading = true;

 recyclerView.addOnScrollListener(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)
        {

            if (loading) {
                if (dy > 0) //check for scroll down
                {
                    visibleItemCount = layoutManager.getChildCount();
                    totalItemCount = layoutManager.getItemCount();
                    pastVisiblesItems = layoutManager.findFirstVisibleItemPosition();

                    if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
                        loading = false;

                        Log.v("...", " Reached Last Item");
                        loadMoreVideos(searchVideos);
                    }

                }
            }
        }
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RecyclerView OnScrollListener() 问题 的相关文章

随机推荐

  • 全局概述覆盖

    我可以通过什么方式覆盖全局主题 以便所有使用variant outlined 的组件都受到该样式的影响 还想覆盖焦点 悬停等事件 material ui core 3 9 2 顺便说一句 我不确定有多少不同的组件有 概述 的变体 您无法在单
  • 实施访客计数器

    我是一个新手 正在使用 ASP Net 2 0 和 C 2005 开发一个网站 我想添加一个工具来计算数量 我网站的访问者数量 我已经收集了使用 Global asax 添加此功能的基本信息 我通过在 system web 部分下添加行 对
  • 此组件上的样式要求您的应用程序主题为 Theme.MaterialComponents (或其后代)

    我是 Android 新手 我可能有一个愚蠢 愚蠢的问题 我有一个活动 我想在其中动态创建多个输入字段 输入字段的数量由用户定义 因为输入是样式化的并且由 2 个元素组成 并且不想每次都创建这些元素 因为元素有多个每次都相同的参数 这就是为
  • 如何使用 jQuery 检测页面是否已完全渲染?

    使用时 document ready functioon alert Loaded 它会弹出警告框 上面写着 已加载 甚至before页面已完全加载 换句话说 加载仍在继续 就像图像一样 有什么想法吗 window on load func
  • 复制嵌套自定义对象:深度复制的替代方案

    我正在寻找一个包含类对象列表的类对象的深层副本 每个类对象都有自己的一组内容 这些对象不包含任何比整数和列表更令人兴奋的东西 没有字典 没有等待生成的生成器等 我正在一个循环中对 500 800 个对象执行深度复制 这确实减慢了程序速度 我
  • 通过互操作在 Excel 中绘制网格线

    知道在互操作中使用 Excel 2003 时关闭网格线的设置隐藏在哪里吗 DisplayGridlines 是 Excel Window 对象上的一种方法 例如 ActiveWindow DisplayGridlines true
  • 有没有办法将命名参数传递给格式宏而不重复变量名称?

    使用 Rust 的新版本 您可以像这样简化结构初始化 Foo a a b b to this Foo a b 是否可以做类似的事情format println 类似宏 现在我需要这样写 let a a let b b write file
  • JavaFX:最初从 FXML 加载场景时,在 java 代码中向场景添加新节点

    当场景最初从 FXML 加载时 如何在 java 代码中向场景添加新节点 我已经从 FXML 加载 如下所示 Parent root FXMLLoader load getClass getResource sample fxml Scen
  • MySQL 选择列名作为字段

    我有一个 mysql 表 看起来像这样 id col 1 col 2 col 3 1 2 34 64 2 6 53 23 我希望能够查询 id 并获取多行 每一列一行 例如 SELECT column name as column colu
  • 如何从图形中删除框架

    要删除图中的框架 我写 frameon False 完美配合pyplot figure 但与matplotlib Figure它仅删除灰色背景 框架保持不变 另外 我只希望线条显示 图形的所有其余部分都是透明的 使用 pyplot 我可以做
  • 使用 Python pdfMiner 提取每页文本?

    我尝试过使用 pypdf 和 pdfMiner 从 PDF 文件中提取文本 我有一些不友好的 PDF 只有 pdfMiner 才能成功提取 我正在使用代码here提取整个文件的文本 但是 我真的很想在每页的基础上提取文本 例如pages i
  • git svn 与 git 子树兼容吗?

    现在 git subtree 已经合并到核心 git 发行版中 从 1 8 0 开始它也在 Msysgit 上 有谁知道 git svn 是否可以与 git subtree 一起使用 注意 我不是在谈论子树合并策略 而是关于this 使用
  • 很长的单词无法在 HTML/CSS 中换行

    我遇到一个问题 如果用户输入长评论 单词 例如 coooooooooooooooooooooooooooooooooooooool 这会破坏页面上的格式 下面是帮助解释场景 未按比例 以及所使用的代码的图像 Html div class c
  • Firebase child_added 仅添加子项

    来自 Firebase API 添加子项 每个初始子项都会触发该事件一次 在此位置 每次有新的触发时都会再次触发 添加了孩子 一些代码 listRef on child added function childSnapshot prevCh
  • 使用 google-play-services_lib 添加 admob 广告后 Android 应用程序大小增加

    我将发布我的应用程序的两个版本 付费版本和免费版本 带有 AdMob 广告 除了我在 AdMob 服务的免费版本中使用的 google play service lib 之外 这两个版本完全相同 使用proguard后最终的apk大小是 付
  • 为什么在 Java 中将数组声明为 Final 不会使其不可变?

    为什么在 Java 中将数组声明为 Final 不会使其不可变 宣布某件事是最终的不是意味着它不能改变吗 From 关于不可变数组的问题很明显 将数组声明为final并不意味着它就不可更改 以下是可能的 final int array ne
  • 如何修改只读属性(element.classList)或将其分配给javascript中的其他值?

    window addEventListener keydown function e const key document querySelector div data key e keyCode console log key class
  • 用实际的 jQuery 改变角度 jQLite

    我希望 AngularJS 默认使用 jQuery 而不是 jQLite 是否可以 因此 在指令链接函数中 link function scope element attrs ngModel element必须是 jQuery 对象 现在我
  • 在 Docker 中运行 mysql_upgrade?

    我试图使用以下命令创建用户 docker exec i database mysql uroot proot e CREATE USER dbadmin 但是我遇到了这个错误 ERROR 1054 42S22 at line 1 Unkno
  • RecyclerView OnScrollListener() 问题

    我有大约 32 条 json 记录 我使用 RecyclerView 来显示它们 并且我已经实现了 OnScrollListener Question 我启动了一个 Activity 我获取了所有 32 条记录 现在当我滚动时 为什么我再次