需求场景:
一个ListView页面,滑动阅读到某一位置,然后退出页面,下次再进入页面的时候,想要直接滑动到上次阅读的位置。

方案1:
页面退出的时候,ListView.getFirstVisiblePosition()来获取当前可见的第一个Item的position并记录,下次再进入页面的时候通过ListView.setSelection(int position)把ListView直接滑动到记忆的position。

此方案记忆的ListView的位置不够精准,因为position指定的是ListView的Item的index,setSelection(int pos)只能把index为pos的item作为第一个可见的item来显示,所以item总是顶头显示的,不会显示滑出屏幕一半的item,所以ListView的位置只能定位到某个item的开始位置,并不精准。

方案1的升级:
在方案1的基础上,再记录FirstVisiblePosition item的top/bottom等位置参数,然后恢复的时候ListView再scrollTo一下。

此方案仍然不行,ListView的scrollTo没效果。

终极方案:
退出页面的时候:

1
Parcelable listState = listView.onSaveInstanceState();

记住listState对象;
再次进入页面的时候:

1
listView.onRestoreInstanceState(listState);

记忆的位置分毫不差。

要注意:listView的状态记忆后,还要保证其数据在两次进入页面时的一致性;
另:ListView的header会影响其状态对象,不过这个是小问题。

转载于:https://www.cnblogs.com/mosthink/p/5288938.html

ListView滑动位置精准记忆相关推荐

  1. [Android Pro] 精确记录和恢复ListView滑动位置

    reference to : http://blog.csdn.net/welovesunflower/article/details/7926512 工作中遇到一个需求,对ListView某一项操作 ...

  2. 精确记录和恢复ListView滑动位置

    工作中遇到一个需求,对ListView某一项操作后刷新ListView,但是如果直接刷新,界面上ListView从第一列开始显示,用户体验不好,于是在网上搜了一些恢复LIstView滑动位置的方法.解 ...

  3. Android学习记录(二十七)--ListView刷新记录滑动位置的实现。

    在listview中实现文件系统时,目录层级跳转,采用activity跳转的话,压栈可能会非常的多,这种实现是不合理的. 如果不压栈的话,如果回退到上一次目录,就需要记录上一次滑动的位置.本文记录一下 ...

  4. ListView滑动删除效果实现

    通过继承ListView然后结合PopupWindow实现 首先是布局文件: delete_btn.xml:这里只需要一个Button <?xml version="1.0" ...

  5. Android在ListView滑动数据混乱

    我相信做过Android应用程序开发或多或少都遇到了这个问题.或者是在ListView数据损坏幻灯片事件.要么GridView数据损坏幻灯片事件. 让我们来看看一个网友写的文章,个人感觉还不错的文章: ...

  6. Android之 如何解决ScrollView 和ListView滑动冲突的问题如何解决ScrollView can host only one direct child

    android 采用ScrollView布局时出现异常:ScrollView can host only one direct child. 解决办法:主要是ScrollView内部只能有一个子元素, ...

  7. scrollview嵌套listview 滑动事件冲突的解决方法

    scrollview嵌套listview 滑动事件冲突的解决方法 参考文章: (1)scrollview嵌套listview 滑动事件冲突的解决方法 (2)https://www.cnblogs.co ...

  8. vue-awesome-swiper 传参控制滑动位置 滚动位置 slideTo 备注防止后期忘记

    接收半路项目,有个需求点击下面的轮播缩略图,控制上面轮播图滑动位置 <swiper :options="swiperOption1" ref="mySwiper&q ...

  9. (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)

    前言: 以前看了些关于图片优化处理缓存比较全的视频(感谢慕风网),现在回顾觉得还是挺好的也就总结出来下,感觉针对图片做处理这块还真的用的比较多,本文章只要使用异步线程AsyncTask.自定义的Ima ...

最新文章

  1. 计算机用户win7修改不,Win7电脑时间改不了的解决方法
  2. 可持续字典树 Perfect Security
  3. 互联网晚报 | 11月21日 星期日 | B站公布《三体》动画首个预告片;涪陵榨菜回应天价礼盒;农行个人贷款余额突破7万亿元...
  4. pdfContentByte 类 图像和文本的绝对位置
  5. Java-java.io.BufferedInputStream
  6. php+mysql开发实战 pdf_《PHP + MySQL 开发实战》怎么样_目录_pdf在线阅读 - 课课家教育...
  7. 使用Python和Numpy进行波士顿房价预测任务(一)【深度学习入门_学习笔记】
  8. 笔记︱金融风险之欺诈分类以及银行防控体系简述
  9. 深入浅出ObjC之消息
  10. 分布式服务防雪崩熔断器(Hystrix),实现服务降级
  11. 24. (附加)二叉搜索树的前续遍历序列(c++版本)
  12. Atitit React的相关概念东东 attilax总结 v3
  13. Qt公有槽和私有槽的区别
  14. java关键字有多少?
  15. 维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现
  16. 查看执行计划 oracle,查看Oracle执行计划的几种方法
  17. 软件开发安全左移最佳工具-iast
  18. 福建省2020年计算机学业水平考试时间,2020学业水平考试时间表
  19. Tanzu 学习系列之TKGm for vSphere 快速部署
  20. S3C2440裸机开发----点亮LED

热门文章

  1. LeetCode 595 Big Countries: SQL的题
  2. LeetCode 37. Sudoku Solver--数独求解(回溯法)--Java 3ms,Python 80ms 解法
  3. Oracle的REGEXP_INSTR再mysql中实现
  4. 汕头金山中学2021高考成绩查询,2019汕头市金山中学录取分数线及2019高考成绩喜报...
  5. SpringBoot-400-Bad-Request(Request-header-is-too-large)
  6. Swift的Guard语句
  7. k8s多master建议用几个_Kubernetes 教程之跟着官方文档从零搭建 K8S
  8. 全程pwm调光_dc调光的手机有哪些
  9. redis php数据插入失败,redis插入数据,恢复数据测试(禁止淘汰策略下恢复大于redis内存限制数据情况)...
  10. python抠图_python和opencv实现抠图