ListView 之定位问题(滚动到某一项目到特定位置)!!!
发布日期:2021-10-17 15:07:08 浏览次数:2 分类:技术文章

本文共 793 字,大约阅读时间需要 2 分钟。

使用ScrollView进行项目滚动很容易,ScrollTo方法就完全可以达到效果。

查看ListView也有同样的方法,想当然认为也是一样的实现,所以使用ScrollTo()方法测试无数次。。。。结果证明,不好使。
ListView使用缓存机制显示UI,使用ListView的getChildren或者getAllViews方法,获取到的列表项目的数量,非常少。比如我的历史数据条数在1000条左右,但是ListView使用getChildren等方法获取到数量仅仅为7个(屏幕能够放下的项目数量),其余的都是使用同样的实例,仅仅修改其中的数据达到效果而已。
所以,要让ListView定位到指定的位置,可以使用 setSelection方法,可以传递一个参数,position,即你要定位到的项目位置。

/** Save the position **/int currentPosition = listView.getFirstVisiblePosition();//Here u should save the currentPosition anywhere/** Restore the previus saved position **/listView.setSelection(savedPosition);
当然,也可以使用这个方法:
// save index and top positionint index = mList.getFirstVisiblePosition();View v = mList.getChildAt(0);int top = (v == null) ? 0 : v.getTop();// ...// restoremList.setSelectionFromTop(index, top);
 
亲测好使!!能达到像QQ的那种效果
 

转载地址:https://blog.csdn.net/tenggangren/article/details/8661735 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android 设置支持pad等大屏幕、大分辨率的设备!!
下一篇:listview + Viewholder + CheckBox 优化listview

发表评论

最新留言

不错!
[***.144.177.141]2024年04月23日 18时48分00秒