30
七/10Android开发之ListView 适配器(Adapter)优化
作者: ideasandroid 分类: android基础, android高级编程[本文严禁转载] 来源:www.ideasandroid.com 原文: http://www.ideasandroid.com/archives/295
ListView的Adapter的作用如下图所示:
Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源?
先看看下面的代码:
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;
}
怎么样?如果超过1000000项时,后果不堪设想!您可千万别这么写!
我们再来看看下面的代码:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item, null);
}
((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);
((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(
(position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}
怎么样,上面的代码是不是好了很多?系统将会减少创建很多View。性能得到了很大的提升。
还有没有优化的方法呢? 答案是肯定的:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
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;
}
static class ViewHolder {
TextView text;
ImageView icon;
}
分享到:
相关推荐
基于Eclipse开发平台,Android中使用ListView和三种适配器(ArrayAdaper,SimpleAdapter,BaseAdapter)实现数据的填充。
我们使用listview时需要设置适配器和viewholder,本案例我们将适配器做了深层次的抽象,使其称为模板可以引用。来自:http://www.imooc.com/learn/372
简单的listview自定义适配器的使用方法,注释很清晰,也有对应的博文介绍
主要介绍了Android ListView和Adapter数据适配器的简单介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
我们使用listview时需要设置适配器和viewholder,本案例我们将适配器做了深层次的抽象,使其称为模板可以引用。来自:http://www.imooc.com/learn/372
直接两个listView 布局文件,数据直接输入,获得 嵌套ListView 的适配效果
Android ListView的优化,在做Android项目的时候,在用到ListView 界面及数据显示,这个时候如果资源过大,对项目来说,用户体验肯定是不好的,这里就对如何优化做了详细介绍: Adapter的作用就是ListView界面与数据...
主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
主要介绍了详解xamarin Android 实现ListView万能适配器的相关资料,这里主要实现listview 适配器的实例,需要的朋友可以参考下
Android自定义adapter的listview代码
Android开发之ListView适配器(Adapter)优化Android开发——09GoogleI/O之让AndroidUI性能更高效(1)PDF下载:GoogleIO.pdfActivity代码说明:模拟一千条数据,TestAdapter继承自BaseAdapter,main.xml见文章末尾...
在 Android中 如果使用到了 ListView 或GridView 一定要 给其 添加 适配器Adapter 但 每次 写对应的 适配器时,其中很多方法都是 重复的 , 所以我这个demo 将其封装了起来,使用的时候,只需继承 我封装的类,然后...
android-custom-array-adapter-demo, Android演示如何使用定制适配器填充 ListView Android定制适配器演示这里示例演示如何使用自定义布局模板显示一个基于 array 数据源的ListView 。 在这种情况下,有一个 User ...
该工程师ec项目,是一个通用的listview/gridview的适配器
Android万能适配器,通吃所有的AbsListView、RecyclerView。 添加依赖 compile 'com.yuyh.easyadapter:library:1.1.4' 用法 package com.yuyh.easyadapter; import android.content.Context; import ...
Android ListView 详解,适配器adapter详解 博客地址:http://blog.csdn.net/csdnyuandaimaxuexi/article/details/48808303
最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家。 首先有一个自定义的Adapter继承于BaseAdapter,下面是自定义的Adapter,精华在getView()方法中 package ...
这个是我写的一个自定义Adapter适配器,用来绑定数据到ListView上。我写的代码非常简单易懂