1.0 listview的adapter中getview的三种写法
来源:互联网 发布:微信红包牛牛源码v8 编辑:程序博客网 时间:2024/06/05 18:57
说明:以下三个例子代码摘自google 2010 I/O大会
getview的加载方法一般有以下三种种方式:
最慢的加载方式是每一次都重新定义一个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;
}
正确的加载方式是当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;
}
最快的方式是定义一个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;
}
三种方式加载效率对比如下图所示:
后面1.1,1.2详细分析第三种写法,如何实现了优化。
- 1.0 listview的adapter中getview的三种写法
- listview的adapter中getview的三种写法
- ListView的adapter中getView被多次调用的问题
- ListView的adapter中getView方法一直调用
- ListView中adapter的getView()复用item原理
- Adapter中getView的理解!
- android自定义Adapter中getView()三种写法及其效率问题。
- ListView中getView的原理
- ListView中getView()的原理
- android中GridView的Adapter的getView()
- ListAcitivity、GridtAcitivity的Adapter中getView()四种优化方案
- 关于Adapter中getView的重写方法
- Adapter中getView的理解!(convertView )
- adapter中getview重复调用的问题
- Adapter中getView方法的陷阱
- 解决ListView,Gallery的Adapter中由于布局问题导致的getView多次调用问题
- [Android]ListView的Adapter.getView()方法中延迟加载图片的优化
- Android ListView的适配器 Adapter 中GetView方法调用次数大于数据条数的问题
- PCRE测试
- Hibernate一级缓存、二级缓存以及查询缓存的关系
- Mysql学习笔记八,Mysql优化篇,常用sql技巧和常见问题
- CGI跟我学
- Linux 下查看机器代码
- 1.0 listview的adapter中getview的三种写法
- 融资的简单概念-20151203
- Android Notification通知小结
- 安卓中常用的第三方框架
- android控件—ListView(1)
- 【SSH项目实战】国税协同平台-7.POI导入用户列表文件
- C++运算符重载http://blog.csdn.net/wangfengwf/article/details/11580653
- 【SSH项目实战】国税协同平台-8.户帐号唯一性校验
- MFC下实现 灰度图像显示函数代码 C++