listview分析

重点都在onlayout中,第一次没有child,所以第一次调用fulldown,里面调用getview将view 添加到listview中

因为每个onlayout都得调用两次,那么第二次就用的是activeview[]来进行缓存

里面有个机制就是有个active数组,是存放当前显示的view,然后detach,然后再full,就从这里面取。

滑动还是靠scrollto,监听滑动事件调用trackmotionscroll(abslistview),这个方法里面调用fillgap,来复用在scrapview中的view,将这个对象传入getview()中复用,移出屏幕的加入scrap中,这个操作同样是在trackmotionscroll中完成的。

另外它是根据type来回收的

将要显示的view调用obtianview,如果此时scrapview中有就复用,没有就创建。

如果移出屏幕,那么它就会被加入到scrapview中,

缓存view的个数,如果都是一种类型,那么一开始向下滑,创建一个(这时还没有缓存的),然后回收一个(最上面那个已经看不到了),下一个再显示的时候就复用了。

每种type都是一个数组,所以存在一个arraylist[]中

滑动的时候动态添加view(进入到屏幕内的),是fillgap机制,计算空隙,然后添加的时候根据position来layout到正确的位置

他会判断上下方向,然后根据这个来回收,然后fillgap。回收会detach,然后加入到scrapview中,fillgap会复用,然后attach。

其实listview主体是一个viewgroup,recyclebin是负责回收重用的,负责惯性滑动的volectiytacker,负责滑动的overscrollby,负责显示的addviewinLayout,attach,detach。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • RecyclerView是Android 5.0系统官方推出的一个代替listView的组件,那么究竟好在哪里呢?...
    niknowzcd阅读 6,943评论 5 24
  • 由于 Android学习笔记之ListView复用机制 这篇文章总结性语句通俗易懂。我又是以学习总结为目的,所以用...
    CrazyCarrot阅读 2,075评论 2 6
  • 七世情缘 耶当 玄皇上圣 天地玄黄,混沌一片,天极荒芜。在至远处,一个亮点,渐渐扩大,形成一个灼眼明球,状如焰火。...
    耶当阅读 288评论 0 0
  • 一个非常简单的常识和本质规律, 鸟与鱼不同, 腊梅与昙花不同, 人与人不同。 所以,绝对的鸡汤和二元对立论是需要清...
    孙晓晓晓阅读 332评论 0 0