实例化一个ListView,需要给这个listview设定一个适配器(adapter)才能够使其正常工作。如果我们重写了一个适配器的话,我们会发现我们需要重载四个方法:如下图
重写监听器1.getCount()函数,返回的是我们调用的这个listview的长度
listview开始绘制的时候,会调用该方法,来一行一行的绘制listview。如果你的getCount()返回值是0的话,列表一行都不会显示,如果返回1,就只显示一行。返回几则显示几行。
?如果要显示的item很多怎么破?我们也不可能会生成成千上万的item吧?
Android早已经缓存了这些视图,大家可以看下下面这个截图来理解下: Paste_Image.png
原理剖析:
1.如果有几千几万甚至更多的选项(item)时,其中只有可见的如图中七个item在内存中存放着,而其他的都在recycler中
2.ListView先请求一个type1视图(getView)然后请求其他可见的项目。convertView在getView中是空(null)的
3.当item1滚出屏幕,并且一个新的项目从屏幕低端上来时,ListView再请求一个type1视图。convertView此时不是空值了,它的值是item1。你只需设定新的数据然后返回convertView,不必重新创建一个视图
自己重写一个adapter适配器(重点在于getview()函数):
网友评论