`
wangxuefang
  • 浏览: 121229 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ListView等的Adapter优化

阅读更多

      众所周知,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优化 实例,需要的朋友可以参考一下

    ListView性能优化之视图缓存

    ListView 的性能优化可以从多方面入手,包括 Adapter 的优化、视图缓存、数据加载优化等。其中,Adapter 的优化是 ListView 性能优化的关键所在。Google I/O 大会提供了多种优化 Adapter 的方案,包括使用 ...

    android BaseAdapter listView优化

    ListView与BaseAdapter的配套使用 理解android 中adapter适配的作用 以及ListView的优化方式

    listview和adapter的网络下载取图

    该例子是一款listview请求网络下载取图片,价格,等等一个类似于淘宝的商城型项目的运用,里面涉及到很多listview和adapter的优化方案,以及数据的解析操作

    Adapter,Spinner,ListView及其优化

    Adapter,Spinner,ListView及其优化

    ListView的优化使用-抽取ViewHolder以及adapter类

    通常我们在一个项目中会多处使用到listview,我们为什么不把它抽取出来呢,这样使用起来方便一百倍,而且可以提高代码的复用率

    Adapter,Spinner,ListView及其优化

    Adapter,Spinner,ListView及其优化

    Android ListView适配器(Adapter)优化方法详解

    Android ListView的优化,在做Android项目的时候,在用到ListView 界面及数据显示,这个时候如果资源过大,对项目来说,用户体验肯定是不好的,这里就对如何优化做了详细介绍: Adapter的作用就是ListView界面与数据...

    ListView可复用适配器的封装及性能优化

    ListView是Android开发中最常用的控件之一,但在使用Adapter的时候若不进行合理的优化,容易造成资源浪费、代码冗余的情况,导致开发出来的APP性能低下。经过合理的封装后,项目中使用到的多个ListView能够复用同一...

    android_ListView优化

    android_ListView优化Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会...

    ListViewDemo

    要想优化ListView首先要了解它的工作原理,列表的显示需要三个元素:ListView、Adapter、显示的数据;

    ListView与Adapater的使用

    该项目是ListView与Adapter的使用,包括ListView的优化

    [Android]ListView性能优化之视图缓存

    Android开发之ListView适配器(Adapter)优化Android开发——09GoogleI/O之让AndroidUI性能更高效(1)PDF下载:GoogleIO.pdfActivity代码说明:模拟一千条数据,TestAdapter继承自BaseAdapter,main.xml见文章末尾...

    android listview mvp

    Android MVP+Adapter+ViewHolder抽取-ListView优化方案

    listview优化

    listview 优化 数据驱动, 1.效率上和传统写法一致。 2.避免了在adapter中进行大量数据绑定操作 3.有效封装,使得业务逻辑和代码层次非常清晰,后期修改起来也非常方便。

    详解xamarin Android 实现ListView万能适配器

    早些时候接触xamarin Android 的列表,写了很多ListView的Adapter,建一个ListView就写一个Adapter,每一个Adapter里面还有去写一个ViewHolder的类来优化,自从看了hongyang博客的listview万能适配器的文章,学习良多...

    Android中ListView的几种常见的优化方法总结

    首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中...

    MyListView201604180034超级优化的Adapter.zip

    ListView 超级优化的Adapter ,通用的adapter,可以大大简化代码,减少工作量,增加代码可读性。

Global site tag (gtag.js) - Google Analytics