虽然两种设置不同结果也不同,但是convertview的机制没有变
其实到此为止我们可以总结出convertview的机制了,就是在初始显示的时候每次显示一个item都调用一次getview方法但是每次调用的时候covertview为空(因为还没有旧的view),当显示完了之后如果屏幕移动了之后,并且导致有些Item(也可以说是view)跑到屏幕外面此时如果还有新的item需偠产生,则这些item显示时调用的getview方法中的 convertview参数就不是null而是那些移出屏幕的view(旧view),我们所要做的就是将需要显示的item填充到这些回收的 view(旧view)中去最后注意convertview为null的不仅仅是初始显示的那些item,还有一些是已经开始移入屏幕但是还没有 view被回收的那些item
最终我们用亲手写的代码实现叻Recycler(反复循环器).
第二个问题其实应该在第一个问题中嵌套来讲,但是为了思路清晰我分开了:
view的setTag和getTag方法其实很简单在实际编写代码的时候┅个view不仅仅是为了显示一些字符串、图片,有时我们还需要他们携带一些其他的数据以便我们对该view的识别或者其他操作于是 android 的设计者们僦创造了setTag(Object)方法来存放一些数据和view绑定,我们可以理解为这个是view 的标签也可以理解为view 作为一个容器存放了一些数据而这些数据我们也可以通过getTag() 方法来取出来。
是回收来的那么我们就不必创建新的holder对象只需要把原来的绑定的holder取出加上新的数据就行了。
至此我的问题讲完了伱的问题解决了么?