添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
想出国的苦瓜  ·  PostgreSQL 教程: ...·  2 周前    · 
高大的日光灯  ·  CJ inspects 4 courts ...·  2 月前    · 
痴情的大葱  ·  SpringBoot集成ffmpeg和jav ...·  7 月前    · 
至今单身的小蝌蚪  ·  What's new and ...·  1 年前    · 
首页
学习
活动
专区
工具
TVP
最新优惠活动
发布
精选内容/技术社群/优惠产品, 尽在小程序
立即前往

如何在滚动RecyclerView时获取更新的滚动位置

在滚动RecyclerView时获取更新的滚动位置,可以通过RecyclerView的addOnScrollListener()方法来实现。addOnScrollListener()方法可以添加一个滚动监听器,当RecyclerView滚动时会触发相应的回调方法。

具体步骤如下:

  1. 首先,创建一个RecyclerView对象,并设置其布局管理器和适配器。
  2. 调用RecyclerView的addOnScrollListener()方法,添加一个滚动监听器。
  3. 在滚动监听器的回调方法中,可以获取到当前RecyclerView的滚动状态和滚动位置。

以下是一个示例代码:

代码语言: txt
复制
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        // 滚动状态改变时的回调方法
    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        // 滚动时的回调方法
        int firstVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
        int lastVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();
        // 获取第一个可见项和最后一个可见项的位置
});

在上述代码中,onScrollStateChanged()方法是滚动状态改变时的回调方法,可以根据newState参数判断滚动状态,例如判断是否滚动停止。

onScrolled()方法是滚动时的回调方法,可以通过RecyclerView的布局管理器获取到第一个可见项和最后一个可见项的位置,即firstVisibleItemPosition和lastVisibleItemPosition。

根据滚动位置的需求,可以在这两个回调方法中进行相应的处理。

腾讯云相关产品推荐:腾讯云移动直播(https://cloud.tencent.com/product/mlvb)可以用于实时直播场景,提供了丰富的功能和接口,可以满足不同的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关· 内容

恢复 RecyclerView 滚动 位置

您可能在开发过程中遇到过这种情况,在 Activity/Fragment 被重新创建后, RecyclerView 丢失了它之前保有的 滚动 位置 信息。...通常这种情况发生 原因是由于异步加载 Adapter 数据,且数据在 RecyclerView 需要进行布局 时候尚未加载完成,导致 RecyclerView 无法恢复到之前 滚动 位置 。...从  1.2.0-alpha02 版本开始,Jetpack RecyclerView 提供了一个新 API,可以让 Adapter  在数据加载完成之前阻塞布局行为 ,从而避免丢失 滚动 位置 信息。...接下来我们会介绍如何使用这个新 API,以及它 工作原理。 恢复至原有 滚动 位置 有好几种方法可以用来恢复 RecyclerView 至正确 滚动 位置 ,您可能已经在实际项目中用到了这些方法。...它有三个选项: ALLOW — 默认状态,会在下一次布局完成 立即恢复 RecyclerView 状态; PREVENT_WHEN_EMPTY — 仅当 adapter 不为空 (即 adapter.getItemCount

1.5K 1 0
  • vue返回上一页面 回到原先 滚动 位置

    项目结束,测试 发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表 ,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面 回到原先 滚动 页面。...component: index, meta: { keepAlive: true 这样在index.vue中,mounted方发只走一次,在浏览器上实现了返回原来 滚动 位置 目的...但是在手机上测试,发现没用, 解决手机上实现目的 方法: //在页面离开 记录 滚动 位置 beforeRouteLeave (to, from, next) { this.scrollTop =...document.documentElement.scrollTop || document.body.scrollTop next() //进入该页面 ,用之前保存 滚动 位置 赋值 beforeRouteEnter

    3K 2 0

    《Chrome插件英雄榜》第94篇 更新 !SmoothScroll让网页 滚动 奶油般顺滑 奇妙小工具

    我们使用鼠标滚轮 滚动 网页 ,网页 滚动 动画是不连续 ,这会让人眼感觉不舒服,我找到了一款好用 小工具,让网页 滚动 如果奶油般顺滑。 启用SmoothScroll 前后对比 ?...启用SmoothScroll 前后对比 右下角为实时录制 鼠标滚轮动作 《SmoothScroll》是一个简单实用 小工具,让滚轮鼠标也能拥有类似触控板奶油般 顺滑....如果你想让浏览器之外 软件也能拥有顺滑 体验,欢迎搜索微软 Surface Arc Mouse 鼠标,从硬件层面让Windows 滚动 macOS般顺滑。 ?...https://raw.githubusercontent.com/zhaoolee/ChromeAppHeroes/master/backup/094-smoothscroll.zip 写在最后(我需要你 支持...) 本文属于Chrome插件英雄榜 项目的一部分, 项目Github地址: https://github.com/zhaoolee/ChromeAppHeroes Chrome插件英雄榜, 为优秀 Chrome

    742 1 0

    RecyclerView 预加载!

    监听列表 滚动 状态 第一个想到 方案是监听列表 滚动 状态,当列表快 滚动 到底部 执行预加载, RecyclerView .OnScrollListener提供了两个回调: public class RecyclerView ...dx, int dy){} 在onScrolled()可以拿到LayoutManager,它提供了很多和表项 位置 有关 方法: // 为 RecyclerView 新增扩展方法,用于监听预加载事件...就测出 bug:当快速 滚动 列表 onPreload()没有执行,当慢慢 滚动 列表 onPrelaod()会执行多次。...列表在被显示之前必然经历了onBindViewHolder(holder: ViewHolder, position: Int),该方法中就能轻松 获取 表项索引,可以把刚才 判断逻辑移到 RecyclerView .Adapter...// 更新 滚动 状态 scrollState = newState super.onScrollStateChanged( recyclerView

    2.4K 0 0

    Android:让你明明白白 使用 RecyclerView ——SnapHelper详解

    简介 RecyclerView 在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助 RecyclerView 滚动 结束 将Item对齐到某个 位置 。...SnapHelper是一个抽象类,官方提供了一个LinearSnapHelper 子类,可以让 RecyclerView 滚动 停止 相应 Item停留中间 位置 。...在snapFromFling()方法中会创建一个SmoothScroller,并且根据速率计算出 滚动 停止 位置 ,将该 位置 设置给SmoothScroller并启动 滚动 。...),得到对应 snapPosition,然后通过estimateNextPositionDiffForFling()方法估算 位置 偏移量,snapPosition加上 位置 偏移量就得到最终 滚动 结束 位置 ,...希望读到这 您能转发分享和关注一下我,以后还会 更新 技术干货,谢谢您 支持! 转发+点赞+关注,第一 获取 最新知识点 Android架构师之路很漫长,一起共勉吧!

    5.9K 4 0

    Android必知必会 - RecyclerView 恢复上次 滚动 位置

    记录 RecyclerView 滚动 位置 并恢复是一个很常见 需求,通常需要精准恢复到上次 位置 。...预计会用到 RecyclerView 相关 三个知识点: 监听 RecyclerView 滚动 状态 监听 RecyclerView 完成绘制 滚动 RecyclerView 到指定 位置 在「 RecyclerView ...完成绘制」 ,记录首个元素 偏移量作为基础偏移量;此步非必须流程,根据自己实际情况看是否需要,有些情况此基础偏移量为0,即不存在基础偏移量 问题; 在「监听 RecyclerView 滚动 状态」里, 滚动 结束 ...,记录最左侧 元素坐标和偏移量; 再次打开当前页面 ,检查是否存在偏移量信息 记录,有则进行 位置 恢复,即「 滚动 RecyclerView 到指定 位置 」。...== null) { return; rvOffset = leftView.getLeft(); // 获取 该view 左边 偏移量,垂直布局 获取

    2.1K 2 0

    写给初学者 Jetpack Compose教程,Lazy Layout

    本文同步发表于我 微信公众号,扫一扫文章底部 二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章 更新 。 大家好,写给初学者 Jetpack Compose教程又来了。...因此最好 设计方案就是,当用户向下 滚动 列表 ,我们就认为用户不再需要和Fab按钮交互,此时将按钮进行隐藏。 下面具体看一下如 何在 Compose中实现这种效果。...每当你认为自己需要用到嵌套 滚动 ,我觉得都应该先暂停一下,想想是不是有其他 替代方案, ConcatAdapter等。...其中,VerticalScrollable()函数是垂直方向 滚动 列表,它在第一行 位置 又嵌套了HorizontalScrollable()函数。...相比于 RecyclerView ,基于Compose Lazy Layout在这一点上确实非常劣势,因为 RecyclerView 就完全不会有重组 困扰,只需要offset一下子项 位置 就可以了。

    548 1 0

    项目需求讨论- 自定义滚轮(第二波新实现)

    而且如果你手指快速 滑动,不停 滚动 ,你就会滑到顶部 位置 。因为我们 是ScrollView 最后选中哪一项,才让它 滚动 到中间相应 那一项。 那有些人可能会说,那我就不只弄这几组。...然后就只能通过其他方式来 获取 滚动 距离。...---- 滚动 后调整距离让 RecyclerView 滚到特定 position 位置 : 我简单介绍,就只分二种情况来谈下(正好滑到一个标准 距离,让Item正好完全显示这种情况我就去除了): 顶部 Item...这时候大家也知道,应该是让当前 屏幕内 获取 first Item 滚动 出界面,所以大家一想就说 获取 第一个Item Position值,然后调用 RecyclerView .smoothScrollToPosition...但是结果是不会 滚动 ,原来这个方法当我们 Position + 1已经出现在屏幕上了。不管是不是第一个,不管处于屏幕 哪个 位置 ,这个 RecyclerView 就不会 滚动 。我忍不住又一句 WHF!!。

    1.1K 2 0

    recycleview 优化_ recyclerview 原理

    都有一个唯一 id来标识,通过getItemId()来 获取 这个唯一标识id,当然我们不能用position来标识,因为itemView会复用, 位置 会乱序。...这个机制会导致一个问题,启动应用之后,在屏幕可见范围内,如果只有一张卡片可见,当 滚动 候, RecyclerView 找不到可以重用 view了,它将创建一个新 ,因此在滑动到第二个feed 时候就会有一定 延时...具体实现方式是:在 RecyclerView 开始一个 滚动 new Runnable对象,根据 layout manager 和 滚动 方向预取即将进入视野 条目,可以同时取出一个或多个条目,例如在使用...我们在给 RecyclerView ArrayList data添加一个Data数据 ,一般需要自己通知 RecyclerView 更新 ,尤其是遇到去重操作,还需要遍历一次data,定位后再决定是插入还是 更新 现有数据... 发现本站有涉嫌侵权/违法违规 内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.1K 2 1

    Android中使用 RecyclerView ,有哪些常见 性能优化技巧可以分享?

    使用 RecyclerView ,性能优化是确保流畅用户体验 关键。...9、 优化图片加载: 使用图片加载库( Glide 或 Picasso)并合理配置缓存策略,避免在 滚动 加载大图。...12、 预加载数据: 实现自定义 LayoutManager 或使用 Paginate 等库来预加载数据,减少 滚动 加载延迟。...13、 监听 滚动 状态: 通过 addOnScrollListener 监听 滚动 状态,在滑动 暂停耗时操作,如图片加载。...16、 避免频繁调用notifyDataSetChanged: 尽量使用更具体 更新 方法, notifyItemChanged、notifyItemInserted 等,以减少不必要 视图 更新

    86 1 0

    再也不用担心面试官问RecycleView了

    RecyclerView 预取机制 如何实现 RecyclerView 局部 更新 ,用过payload吗,notifyItemChange方法中 参数?...,包含数据和position信息,复用时必须是相同 位置 ViewHolder才能复用,应用场景在那些需要来回滑动 列表中,当往回滑动 ,能直接复用ViewHolder数据,不需要重新bindView。...如何实现 RecyclerView 局部 更新 ,用过payload吗,notifyItemChange方法中 参数?...这是因为 RecyclerView 默认是setNestedScrollingEnabled(true),这个方法 含义是支持嵌套 滚动 。...也就是说当它嵌套在NestedScrollView中 ,默认会随着NestedScrollView 滚动 滚动 ,放弃了自己 滚动 。所以给我们 感觉就是滞留、卡顿。

    1.5K 2 0

    图文讲解 RecyclerView 复用机制 || Recyclerview 进阶

    从Recycler中 获取 一个ViewHolder 逻辑 LayoutManager会调用Recycler.getViewForPosition(pos)来 获取 一个指定 位置 (这个 位置 是子View布局所在 位置 ...根据LayoutManager position 更新 到对应 Adapter position。...情形三 : 滚动 复用 这个情形分析是在情形二 基础上向下滑动 ViewHolder 复用情况以及Recycler中ViewHolder 保存情况, 如下图: ?...在前一篇文章 RecyclerView 刷新机制中分析过, RecyclerView 在滑动时会调用LinearLayoutManager.fill()方法来根据 滚动 距离来向 RecyclerView 填充子View...如果用户此时再下滑的话,可以参考文章开头 从Recycler中 获取 ViewHolder 逻辑: 1. 先按照 位置 从mCacheViews集合中 获取 2.

    2K 3 0

    Android 知乎广告效果实现代码

    问题: 1.图片如 何在 范围内(单个item范围)上下移动, 窗户一般,后面的图是可以动 ,但是窗户是固定 。 2.图片移动 时机肯定和recycleView 滚动 监听item有关,用哪些方法?...2.recycleView Item 滚动 监听,刚好前段时间在仿写微博视频自动播放 接触过,recycleView提供了一些譬如FindFirstVisibleItemPosition(当前屏幕第一个item...2. 获取 recycleView监听以及 位置 计算 写监听之前想想如何把recycleView item与自定义imageView联系起来,通过 canvas.translate(dx,dy)让图片动起来,... 位置 和 广告有效移动距离 @Override public void onScrolled( RecyclerView recyclerView , int dx, int dy) { super.onScrolled...item 位置 (item 顶部 与 recycleView顶部 距离) int top = itemView.getTop(); // 获取 recycleView 高度

    1.4K 4 0

    Android无限循环 RecyclerView 完美实现方案

    背景 项目中要实现横向列表 无限循环 滚动 ,自然而然想到了 RecyclerView ,但我们常用 RecyclerView 是不支持无限循环 滚动 ,所以就需要一些办法让它能够无限循环。...方法里对position参数取余运算,拿到position对应 真实数据索引,然后对itemView绑定数据 最后,在初始化 RecyclerView 时候,让其滑动到指定 位置 Integer.MAX_VALUE...标注5处 layoutDecorated() 方法会对 itemView 进行布局排版,这里可以看出来,我们是根据宽依次往父容器 右边排下去,直到下一个 itemView 顶点 位置 超过了 RecyclerView ...里 item,然后根据 itemView 顶点 位置 进行判断,移除不可见 item。...至此,一个可以实现左右无限循环 LayoutManager就实现了,调用方式跟通常我们用RrcyclerView没有任何区别,只需要给 RecyclerView 设置 LayoutManager 指定我们

    4.8K 2 0