众所周知,Adapter是ListView与界面和数据之间的桥梁,通过Adapter中的gerView()方面来获得界面要显示的View,但你有没有想过,当ListView中数据量很大时,如何对Adapter进行优化呢?
以下有三种实现方式,具体来看一下。
1.
public View getView(int position, View convertView, ViewGroup parent){
final LayoutInflater inflater = (LayoutInflater) mContext.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.list_item_icon_text, null);
((ImageView) v.findViewById(R.id.icon)).setImageResource(R.drawable.icon);
((TextView) v.findViewById(R.id.text)).setText(mData[position]);
return v;
}
这是最简单的一种方式,没有经过任何的优化,菜鸟级别的人很容易这样做。
2.
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = inflater.inflate(R.layout.list_item_icon_text, null);
}
((ImageView) v.findViewById(R.id.icon)).setImageResource(R.drawable.icon);
((TextView) v.findViewById(R.id.text)).setText(mData[position]);
return convertView;
}
这是一种稍微改进的方式,有形成每个ListView的item时,每个Item的容器对象进行了重得利用。
3.
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
final LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item_icon_text, null);
holder = new ViewHolder();
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
holder.text = (TextView) convertView.findViewById(R.id.text);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.icon.setImageResource(R.drawable.icon);
holder.text.setText(mData[position]);
return convertView;
}
static class ViewHolder {
ImageView icon;
TextView text;
}
这是09年Google IO大会上给出的优化建议,经过改进后,在处理大量数据的时候,确实流畅了很多。
文章参照:
http://www.ideasandroid.com/archives/295
http://www.cnblogs.com/halzhang/archive/2010/12/05/1896791.html
分享到:
相关推荐
ListView Adapter优化 实例,需要的朋友可以参考一下
ListView 的性能优化可以从多方面入手,包括 Adapter 的优化、视图缓存、数据加载优化等。其中,Adapter 的优化是 ListView 性能优化的关键所在。Google I/O 大会提供了多种优化 Adapter 的方案,包括使用 ...
ListView与BaseAdapter的配套使用 理解android 中adapter适配的作用 以及ListView的优化方式
该例子是一款listview请求网络下载取图片,价格,等等一个类似于淘宝的商城型项目的运用,里面涉及到很多listview和adapter的优化方案,以及数据的解析操作
Adapter,Spinner,ListView及其优化
通常我们在一个项目中会多处使用到listview,我们为什么不把它抽取出来呢,这样使用起来方便一百倍,而且可以提高代码的复用率
Adapter,Spinner,ListView及其优化
Android ListView的优化,在做Android项目的时候,在用到ListView 界面及数据显示,这个时候如果资源过大,对项目来说,用户体验肯定是不好的,这里就对如何优化做了详细介绍: Adapter的作用就是ListView界面与数据...
ListView是Android开发中最常用的控件之一,但在使用Adapter的时候若不进行合理的优化,容易造成资源浪费、代码冗余的情况,导致开发出来的APP性能低下。经过合理的封装后,项目中使用到的多个ListView能够复用同一...
android_ListView优化Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会...
要想优化ListView首先要了解它的工作原理,列表的显示需要三个元素:ListView、Adapter、显示的数据;
该项目是ListView与Adapter的使用,包括ListView的优化
Android开发之ListView适配器(Adapter)优化Android开发——09GoogleI/O之让AndroidUI性能更高效(1)PDF下载:GoogleIO.pdfActivity代码说明:模拟一千条数据,TestAdapter继承自BaseAdapter,main.xml见文章末尾...
Android MVP+Adapter+ViewHolder抽取-ListView优化方案
listview 优化 数据驱动, 1.效率上和传统写法一致。 2.避免了在adapter中进行大量数据绑定操作 3.有效封装,使得业务逻辑和代码层次非常清晰,后期修改起来也非常方便。
早些时候接触xamarin Android 的列表,写了很多ListView的Adapter,建一个ListView就写一个Adapter,每一个Adapter里面还有去写一个ViewHolder的类来优化,自从看了hongyang博客的listview万能适配器的文章,学习良多...
首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中...
ListView 超级优化的Adapter ,通用的adapter,可以大大简化代码,减少工作量,增加代码可读性。