码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:android   style   blog   color   使用   os   io   数据   

  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实现方法比较

标签:android   style   blog   color   使用   os   io   数据   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!