-
listview加载性能优化
普通类 -
- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
-
-
关于ListView
在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减少对象的创建。
加载数据时,每传入一个对象,调用一次getView()函数,但内存只会存储当前页面item的数据。ListView 针对List中每个item,要求 adapter “给我一个视图” (getView),一个新的视图被返回并显示,示意图如下:
参考链接地址:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html
-
getView()的加载有3种方式
(1)每一次都重新定义一个View载入布局,再加载数据;
(2)当convertView不为空的时候直接重新使用convertView,减少不必要的View的创建,然后加载数据;
(3)定义一个ViewHolder,将convetView的tag设置为ViewHolder,convertView不为空时重新使用。
三种方式的的效率入下图:
-
加载性能优化
目前使用的方法
目前客户端采用的是第二种方式,代码如下:
public View getView(int position, View convertView, ViewGroup parent) {
TextView lctitle;
ImageView remarkUserImg;
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.lc_item, null);
}
remarkUserImg = (ImageView) convertView.findViewById(R.id.remarkUserImg);
lctitle = (TextView) convertView.findViewById(R.id.lctitle);
lctitle.setText(mItems.get(position).get("lctitle"));
loadImage(mItems.get(position).get("remarkUserImg"), remarkUserImg);
return convertView; }
优化之后
static class ViewHolder {
TextView text;ImageView icon;}
public View getView(int position, View convertView, ViewGroup parent) {
TextView lctitle; ImageView remarkUserImg; ViewHolder holder;
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.lc_item, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.lctitle);
remarkUserImg = (ImageView) convertView.findViewById(R.id.remarkUserImg);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(mItems.get(position).get("lctitle")); //holder.icon.setImageBitmap(getBitMap(mItems.get(position).get("remarkUserImg")));//异步加载图片
remarkUserImg = (ImageView) convertView.findViewById(R.id.remarkUserImg);
loadImage(mItems.get(position).get("remarkUserImg"), remarkUserImg);
return convertView; }
使用效果
经测试,ListView加载耗时降低500ms~700ms
-
-
- 标签:
- 使用
- listview
- convertview
- remarkuserimg
- Android
- textview
- view
- 数据
- 优化
- 加载
- imageview
- position
- viewholder
-
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~