首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

恢复 RecyclerView 滚动位置

您可能在开发过程中遇到过这种情况,在 Activity/Fragment 被重新创建后,RecyclerView 丢失了它之前保有的滚动位置信息。...通常这种情况发生原因是由于异步加载 Adapter 数据,且数据在 RecyclerView 需要进行布局时候尚未加载完成,导致 RecyclerView 无法恢复到之前滚动位置。...从  1.2.0-alpha02 版本开始,Jetpack RecyclerView 提供了一个新 API,可以让 Adapter  在数据加载完成之前阻塞布局行为 ,从而避免丢失滚动位置信息。...接下来我们会介绍如何使用这个新 API,以及它工作原理。 恢复至原有滚动位置 有好几种方法可以用来恢复 RecyclerView 至正确滚动位置,您可能已经在实际项目中用到了这些方法。...如果根据您项目实际情况无法采用这种方法,那也可以使用其他方法,只是要么比较复杂 (比如避免在 RecyclerView 中设置 Adapter,但这样又有可能导致像 header 等 item 显示问题

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

利用本地存储,记录滚动位置

2、功能分析 这个功能实现并不是很难,当页面滚动时记录页面滚动位置并保存到本地存储里面,当你再次打开页面的时候读取本地存储里面的值来设置页面滚动位置。具体我们来分析一下。...分析: 1、监听页面滚动状态(是否滚动) 2、滚动时获取页面滚动位置 3、滚动位置保存到本地存储里面 4、页面每次加载时候获取本地存储里面的值 5、获取到值来设置页面滚动位置 3、知识要点...2、滚动时获取页面滚动位置 代码中解决了获取滚动位置兼容问题。...'); } 5、获取到值来设置页面滚动位置 跟获取滚动位置一样处理了浏览器兼容问题。...5、总结 利用本地存储,记录滚动位置,主要涉及了两个主要技术点,一个点是滚动操作,另外一个点是本地存储操作。

2.6K70

二分问题-LeetCode 33、34(上下边界,二分查找

作者:TeddyZhang,公众号:算法工程师之路 DFS基础问题:LeetCode #33 #34 1 编程题 【LeetCode #33】搜索旋转排序数组 假设按照升序排序数组在预先未知某个点上进行了旋转...力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array 【LeetCode #34】在排序数组中查找元素第一个和最后一个位置...找出给定目标值在数组中开始位置和结束位置。 你算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。...那么怎么去查找某个元素第一个和最后一个位置呢?...很简单思路,我们将左边界算法查找目标target变化一下就可以了,第一次查找target,可以得到左边界位置,第二次查找target+1,可能找到也可能找不到,但返回都是最后位置+1位置

91030

python查找列表元素位置、个数、索引方法(大全)

在列表操作中查找列表元素用比较多,python列表(list)提供了 index() 和 count() 方法,它们都可以用来查找元素。...一、index()方法查找列表元素 index() 方法用来查找某个元素在列表中出现位置,返回结果是索引值,如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好使用 count(....py", line 7, in print(name1.index('php', 4, 6)) ValueError: 'php' is not in list 如果查找列表元素不在指定范围内...python', 'java', 'php', 'MySql', 'C++', 'php', 'C', 'php', 'C#'] print(name1.count('php')) 返回结果:3 以上就是两种查找列表元素方法...index() 和count(),详细还有配套视频教程,文章部分资源来自python自学网(www.wakey.com.cn)。

14.6K20

MySQL字符串拼接、截取、替换、查找位置

LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1) 三个函数作用相同,返回子字符串str1在字符串str中开始位置(从第几个字符开始)。...返回第一个与字符串s匹配字符串位置。 字符串拼接 CONCAT(s1,s2,...)函数:返回一个或多个待拼接内容,任意一个为NULL则返回值为NULL。... ``` 字符串替换 INSERT(s1,x,len,s2)函数:返回字符串s1,其子字符串起始于位置x,被字符串s2取代len个字符。...字符串查询位置 LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1)函数:三个函数作用相同,返回子字符串str1在字符串str中开始位置(从第几个字符开始...s匹配字符串位置

7.7K40

利用RedisGeo功能实现查找附近位置

GEO相关命令如下: Redis 命令 描述 GEOHASH 返回一个或多个位置元素 Geohash 表示 GEOPOS 从 key 里返回所有给定位置元素位置(经度和纬度) GEODIST 返回两个给定位置之间距离...WITHCOORD 将位置元素经度和维度也一并返回,非必选。 WITHDIST 在返回位置元素同时, 将位置元素与中心点距离也一并返回。 距离单位和查询单位一致,非必选。...比如返回前 10 个,以避免出现符合结果太多而出现性能问题。 ASC|DESC 排序方式,非必选。默认情况下返回未排序,但是大多数我们需要进行排序。...例如,我们在 cities:locs 中查找以(115.03,38.44)为中心,方圆200km城市,结果包含城市名称、对应坐标和距离中心点距离(km),并按照从近到远排列。...tianjin" 2) "186.6937" 3) 1) "117.02000230550765991" 2) "39.0800000535766543" 你可以加上 COUNT 1来查找最近一个位置

2.2K50

CPU 100%问题查找

使用Process Exporer查找占用CPU资源线程 小木采用了一个8核CPU作为测试环境,这样可以有额外CPU资源来运行我们工具。...第一步 在Process Explorer中设置进程Symbol Path, 选择菜单Options->Configure Symbols...,然后根据你符号文件PDB位置设置相应路径。...只能看到函数调用栈,并不能查看更多信息,比如当前线程处理数据。很多时候,High CPU问题是由于特定数据/样例造成。...用Windbg查找CPU消耗过高问题 为了解决上一章末尾提出两个问题,比如在客户环境对进程产生Dump。 在Windbg中设置要Symbol,加载Dump文件。 第一步 使用!...RtlUserThreadStart+0x21 第四步 上一章末尾提到一个问题如果是特定数据/样例导致High CPU,那么得通过函数处理数据查看,然后对导出数据进行问题重现和研究。

67020

vue里监听页面滚动问题

; 屏幕可用工作区宽度:window.screen.availWidth; scrollHeight: 获取对象滚动高度。...scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容最左端之间距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容最顶端之间距离 scrollWidth:获取对象滚动宽度...offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定父坐标的高度 offsetLeft:获取对象相对于版面或由 offsetParent 属性指定父坐标的计算左侧位置...offsetTop:获取对象相对于版面或由 offsetTop 属性指定父坐标的计算顶端位置 event.clientX 相对文档水平座标 event.clientY 相对文档垂直座标 event.offsetX...相对文档水平座标+垂直方向滚动量 要获取当前页面的滚动条纵坐标位置,用: document.documentElement.scrollTop; 而不是: document.body.scrollTop

3.3K40
领券