android 中ListView 的优化
来源:互联网 发布:获取windows权限 编辑:程序博客网 时间:2024/06/03 19:14
),列表的每一项会显示至页面中。其实,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View,如:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return super.getView(position, convertView, parent);
}
我们看一看下面的这段代码:
public View getView(int position, View convertView, ViewGroup parent) {
View newView = mInflater.inflate(R.layout.list_item, null);
((TextView) newView .findViewById(R.id.text)).setText(DATA[position]);
((ImageView) newView .findViewById(R.id.icon)).setImageBitmap(
(position & 1) == 1 ? mIcon1 : mIcon2);
return newView ;
}
上面的代码块中,我通过LayoutInflater.inflate(,)将Layout文件--layout.list_item转换为View.
(注:Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById())
这时,如果我的ITEM项有数以千条这样多或更多呢,再以上面代码块的写法,后果自己想想吧。
于是,改用其它一种写法:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
}
((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);
((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(
(position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}
这时,上面的代码是不是好了很多?系统将会减少创建很多View。性能得到了很大的提升。
到这里,问一下,还有没有优化的方法呢,是有的,请看————》》:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder); //用setTag(holder)保存find到的控件数据,省得每次getview都 new ViewHolder();
} else {
holder = (ViewHolder) convertView.getTag();//getview中的参数convertView会保存上一次getview的convertview
}
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}
static class ViewHolder {
TextView text;
ImageView icon;
}
这样系统性能会得到更大的提升。
- Android中ListView的优化
- Android中ListView的优化
- android 中ListView 的优化
- Android中listview的优化
- Android中ListView的优化
- Android中ListView的优化
- Android中ListView的优化
- Android中ListView的优化
- Android中Listview的优化
- Android中ListView优化
- Android中ListView优化
- Android中ListView的优化问题
- Android中对ListView的优化处理
- android中listview的性能优化
- android中listview优化的集中方法
- Android中优化ListView的ViewHolder模式
- Android中ListView的优化方法
- Android中ListView的优化点笔记
- 今天心情不好。。。
- leetcode--Binary Search Tree Iterator
- JS 、ExtJS、 Jquery、 Ajax
- 好的代码
- Convolutional Neural Networks for Visual Recognition 3
- android 中ListView 的优化
- ListView已到底部和顶部的判断
- 我是十娘沉梦江,遍洒芳汀,东流少语,喜欲狂,刹时惊梦,空一场!
- 帝国ECMS6.5灵动标签汇集
- POJ 1067 && HDU 1527 取石子游戏(博弈论)
- 杭电1302 The Snail
- 流程控制《1》if
- OpenGL导入三维模型
- Win32控制台中使用定时器的方法