listview面试详解

一、什么是listview

ListView是一个能将数据集合以动态滚动的方式展示到用户界面上的View

 

 

二、listview适配器模式

 View相关-listview

 

 

三、listview的recycleBin机制(回收站,保证有多行数据不会出现OOM)

mActiveView表示活动的view

mScrapView表示所有废弃的view(滑动出屏幕外)

mCurrentScrap表示当前废弃的view

 

setViewTypeCount(int viewTypCount):为每个listview的每个item建立recycleBin机制

fillActiveViews(int childCount,int firstActivePosition):填充activeview

getActiveView(int position):获取屏幕上显示的activeview,一旦被获取一次不可再次获取

addScrapView(View adap,int position):即将要被废弃的view,刚刚被划出屏幕

 View相关-listview

 

 

四、listview的优化

 

·convertview重用/viewHolder

 View相关-listview

convertView缓存(保存废弃的view)

ViewHolder减少每次findViewbyId的次数

 

·三级缓存/监听滑动事件(滑动停止时再加载图片)

·item布局中尽量避免半透明元素:半透明绘制耗时

·可开启硬件加速

相关文章: