listview面试详解
一、什么是listview
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,刚刚被划出屏幕
四、listview的优化
·convertview重用/viewHolder
convertView缓存(保存废弃的view)
ViewHolder减少每次findViewbyId的次数
·三级缓存/监听滑动事件(滑动停止时再加载图片)
·item布局中尽量避免半透明元素:半透明绘制耗时
·可开启硬件加速