ListView滑动位置精准记忆
需求场景:
一个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会影响其状态对象,不过这个是小问题。
ListView滑动位置精准记忆的更多相关文章
- [Android Pro] 精确记录和恢复ListView滑动位置
reference to : http://blog.csdn.net/welovesunflower/article/details/7926512 工作中遇到一个需求,对ListView某一项操作 ...
- 保持listview当前位置
保持listview滑动的位置,一般用在增加listview子item中布局的评论或者退出当前活动,再次进入继续阅读时. 利用ListView.getFirstVisiblePosition()来获取 ...
- ListView滑动删除效果实现
通过继承ListView然后结合PopupWindow实现 首先是布局文件: delete_btn.xml:这里只需要一个Button <?xml version="1.0" ...
- Android Widget 开发详解(二) +支持listView滑动的widget
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/47027263 不少开发项目中都会有widget功能,别小瞧了它,他也是androi ...
- Scroller应用:ListView滑动删除
1.设计思路 在Scroller的应用--滑屏实现中使用Scroller实现滑屏效果,这里使用Scroller与ListView实现相似QQ滑动.然后点击删除功能.设计思路是Item使用Scrolle ...
- “Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置
这个扩展属性从WP8.1就开始用了,主要是为了解决MVVM模式中无法直接控制ListView滚动位置的问题.比如在VM中刷新了数据,需要将View中的ListView滚动到顶部,ListView只有一 ...
- Android ListView滑动过程中图片显示重复错乱闪烁问题解决
最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...
- Android在ListView滑动数据混乱
我相信做过Android应用程序开发或多或少都遇到了这个问题.或者是在ListView数据损坏幻灯片事件.要么GridView数据损坏幻灯片事件. 让我们来看看一个网友写的文章,个人感觉还不错的文章: ...
- Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画
前言: 之前,我已经写了两篇博文,给大家介绍了Android的基础动画是如何实现的,如果还不清楚的,可以点击查看:Android Animation动画详解(一): 补间动画 及 Android An ...
随机推荐
- sqlserver插入时发生在“xxx”处关键发生错误
今天知道了一个小技巧,当你的数据库表名为user时会sqlserver的表发生冲突,所以因该将user这样用[user],ok 一切搞定 .
- GitHub 在 Clion2016.1.3 中的设置
1.在 GitHub 上注册,建立一个 Repositories,结果获得如下 https://github.com/GPerelman/Clion2016.1.3.git 2.打开 git-bash ...
- 隔离click事件
有一些应用,不需要我们自己的定义的click函数,例如: $(document).on('click', '#inp', function(e){ alert('hello world!'); }); ...
- C++ Reflection
http://www.vollmann.com/en/pubs/meta/meta/meta.html http://www.extreme.indiana.edu/reflcpp/ http://w ...
- 关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影
最近在做unity shader forge和marmoset的优化,TA那边遇到了一个阴影显示的问题,具体如下: 在Forward Rendering状态下,静态场景使用了是shader for ...
- 【转】Delphi 关键字详解
absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: string[32]; StrLen: Byte absolute Str; //这个声明 ...
- android自定义控件(1)-点击实现开关按钮切换
自定义控件的步骤.用到的主要方法: 1.首先需要定义一个类,继承自View:对于继承View的类,会需要实现至少一个构造方法:实际上这里一共有三个构造方法: public View (Contex ...
- AngularJS启动过程分析
1111 app.controller('myCtrl',['$scope',function($scope){ $scope.wcrq=1234567890; }]); angular.bo ...
- php中pdo例子
下面是从其他博客看到的代码 <?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $db ...
- CLGeocoder "Lost connection to geod" #error# when use geocodeAddressString:completionHandler
I got this warning when I tried to get destination using CLGeoCoder and the warning is coming out ...