Android ListView与adapt

本文介绍了在Android开发中优化ListView Adapter的三种方法:直接创建视图、利用convertView回收视图及采用ViewHolder模式。ViewHolder模式可以进一步提升加载速度达50%,是高效显示大量数据的有效手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Adapter

Adapter是ListView和数据源之间的中间人。


当每条数据进入可见区时,adapter会调用他的getView()方法,并返回代表具体数据的视图。滚动的时候频繁调用,支持成千上万的数据。

①、最简单的方法,最慢最不实用

public void getView(int position , View convertView , ViewGroup parent){
View item = mInflater.inflate(R.layout.list_view, null);
(TextView)item.findViewById(R.id.text).setText(DATA[position]);
(ImageView)item.findViewById(R.id.img).setImageBitmap(icon);
return item;
}

②、利用convertView回收视图,效率提高200%

复制代码
public void getView(int position , View convertView , ViewGroup parent){
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_view, null);
}
      (TextView)convertView.findViewById(R.id.text).setText(DATA[position]);
      (ImageView)convertView.findViewById(R.id.img).setImageBitmap(icon);
         return convertView;
}  
复制代码

③、使用ViewHolder模式,效率再提高50%

复制代码
static class ViewHolder{
private TextView tv;
private ImageView iv;
}

public void getView(int position , View convertView , ViewGroup parent){
ViewHolder holder;
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_view, null);
holder = new ViewHolder();
holder.tv = (TextView)convertView.findViewById(R.id.text);
holder.iv = (ImageView)convertView.findViewById(R.id.img);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.tv.setText(DATA[position]);
holder.iv.setImageBitmap(icon);
return convertView;
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值