第1层:复用convertView
if(convertView==null){convertView=View.inflate(R.layout.XXX); //n+1}问题: 每次执行getview()都需要执行convertView.findViewByid()得到子view
第二层:使用ViewHolder,减少findViewByid()的次数 减到n+1次ViewHolder holder=null;if(convertView==null){convertView=View.inflate(R.layout.XXX); //n+1holder=new ViewHolder();holder.imageView=(ImageView)convertView.findViewById(xxx);holder.textView=(TextView)convertView.findViewById(yyy);convertView.setTag(holder);}else{
holder=(ViewHolder)convertView.getTag();}
person p= data.get(position);//之前创建的类holder.imageView.setImageResource(p.getIco());holder.textView.setText(p.getName());
static class ViewHolder(){ImageView imageView;TextView textView;}
第三层:图片三级缓存处理(LRu算法)1.内存缓存,优先加载,速度最快2.本地缓存,次优先加载。速度稍快3.网络缓存,最后加载,速度由网络速度决定(浪费流量)
第4层:对数据列表进行分页加载显示1.自己做:通过Scroll监听listView。setOnScrollListener(scrollListenter),当到达底部时加载下一页列表数
if(convertView==null){convertView=View.inflate(R.layout.XXX); //n+1}问题: 每次执行getview()都需要执行convertView.findViewByid()得到子view
第二层:使用ViewHolder,减少findViewByid()的次数 减到n+1次ViewHolder holder=null;if(convertView==null){convertView=View.inflate(R.layout.XXX); //n+1holder=new ViewHolder();holder.imageView=(ImageView)convertView.findViewById(xxx);holder.textView=(TextView)convertView.findViewById(yyy);convertView.setTag(holder);}else{
holder=(ViewHolder)convertView.getTag();}
person p= data.get(position);//之前创建的类holder.imageView.setImageResource(p.getIco());holder.textView.setText(p.getName());
static class ViewHolder(){ImageView imageView;TextView textView;}
第三层:图片三级缓存处理(LRu算法)1.内存缓存,优先加载,速度最快2.本地缓存,次优先加载。速度稍快3.网络缓存,最后加载,速度由网络速度决定(浪费流量)
第4层:对数据列表进行分页加载显示1.自己做:通过Scroll监听listView。setOnScrollListener(scrollListenter),当到达底部时加载下一页列表数