convertView的复用机制
通俗理解:假如一个屏幕最多显示7个Item,当Item1被滑出屏幕,此时Item1 的View会被添加进Recycler(反复循环器)中,相应的在下部就会产生一个Item8,这时调用getView方法,convertView参数就是Item1 的View,也就是说,此时的convertView就是Item1 的复制版(副本)。
那么,此时就会有一个疑问,当ListView具有多种类型的Item时,岂不是就会复用错误?(如:Item1和Item8不是同一种类型,此时Item8复用Item1就错了)
ListView有多种Item时convertView的复用机制
系统在判断convertView是否为NULL时,会先去调用getItemViewType (int position) ,并且查看Recycler(反复循环器)中是否已经有缓存该类型的View(Recycler缓存的View中是否有与当前即将要显示的View是同一种类型)
所以,在上面例子中,当调用getItemViewType时,已经知道了此时的Item8和Item1不是同一种类型,所以,Item8是不会去复用Item1的,在判断convertView时,convertView还是等于NULL。
以上是我个人的理解,如有不正确的地方,请大家帮忙指正,谢谢!