首页 > 其他 > 详细

自定义适配器视图getview实现方法比较

时间:2014-08-09 23:05:29      阅读:501      评论:0      收藏:0      [点我收藏+]

  Android开发之中,listview是一个非常重要的组件,它以列表的形式显示用户的数据,用户可以自由的定义LsitView每一列的内容,样式,很多时候使用ListView都需要使用自定义Adapter,自定义Adapter之中最重要的莫过于getView方法了。

  getView方法实现主要的三种方法:

  1、第一种就是每次都给adapter new一个View载入布局。

    例如:

public View getView(int position, View convertView, ViewGroup parent) {
 View item = mInflater.inflate(R.layout.list_item_icon_text, null);
 ((TextView) item.findViewById(R.id.text)).setText(DATA[position]);
 ((ImageView) item.findViewById(R.id.icon)).setImageBitmap(
 (position & 1) == 1 ? mIcon1 : mIcon2);
 return item;
}

  使用这种方式会占据大量内存,十分影响性能(不建议使用)

  2、当convertView不为空的时候直接重新使用convertView从而减少了很多不必要的View的创建,然后加载数据。

public View getView(int position, View convertView, ViewGroup parent) {
 if (convertView == null) {
 convertView = mInflater.inflate(R.layout.item, parent, false);
 }
 ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);
 ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(
 (position & 1) == 1 ? mIcon1 : mIcon2);
 return convertView;
 }

  这种方式每次都要判断view回收池之中是否有可用的view,如果有则重用;如果没有则,新建View。(可以使用)

  3、最快的一种方式:定义一个ViewHolder,将convetView的tag设置为ViewHolder,不为空时重新使用即可

static class ViewHolder {
TextView text;
ImageView icon;
}
 
public View getView(int position, View convertView, ViewGroup parent) {
 ViewHolder holder;
 
 if (convertView == null) {
 convertView = mInflater.inflate(R.layout.list_item_icon_text,
 parent, false);
 holder = new ViewHolder();
 holder.text = (TextView) convertView.findViewById(R.id.text);
 holder.icon = (ImageView) convertView.findViewById(R.id.icon);
 convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}

  (推荐使用)

 

自定义适配器视图getview实现方法比较,布布扣,bubuko.com

自定义适配器视图getview实现方法比较

原文:http://www.cnblogs.com/haonima/p/3901636.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!