最近在看 张凌华sundy 老师的android视频 关于企业应用UI的优化,此篇为对Adapter的优化
由于adapter加载每一项数据时都要调用Adapter的getView(Params...) 的方法,但是我们对每一项view显示的数据列使用findViewById()和 inflate() 来加载布局,这是一项耗时的IO操作,如果数据量很大时,对性能造成很大的影响,和带来糟糕的用户体验。下面列举Adapter的优化的一些方法。
1.对getView() contentView 的优化:
public View getView(int position,View contentView,ViewGroup parent){
if(contentView == null){
contentView = inflater.inflate(R.layout.item,null);
}else if(contentView != null){
((TextView)contentView.findViewById(R.id.text)).setText(DATA[position]);
((ImageView) contentView.findViewById(R.id.icon)).setImageBitmap((position&1) == 1 ?mIcon1:mIcon2);
}
return contentView;
}
2.添加了ViewHolder 的模式:
static class ViewHolder{
TextView text;
ImageView icon;
}
public View getView(int position,View contentView,ViewGroup parent){
ViewHolder viewHolder;
if(contentView == null){
viewHolder = new ViewHolder();
contentView = inflater.inflate(R.layout.item,null);
viewHolder.text = (TextView)contentView.findViewById(R.id.text);
viewHolder.icon =(ImageView) contentView.findViewById(R.id.icon);
contentView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) content.getTag();
}
viewHolder.texe.setText(DATA[position]);
viewHolder.icon.setImageBitmap((position&1) == 1 ?mIcon1:mIcon2);
return contentView;
}