`

Android开发之ListView 适配器(Adapter)优化

阅读更多

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;
	}

 怎么样?会不会又给您的系统带来很大的提升呢?看看下面三种方式的性能对比图您就知道了!

 

 

分享到:
评论

相关推荐

    listview适配器 ListViewAdapter和ViewHolder代码.rar

    本压缩包“listview适配器 ListViewAdapter和ViewHolder代码.rar”提供了一个简单的使用示例,帮助开发者理解和应用这两个概念。 ListViewAdapter是Android中一个专门用于ListView的适配器类,它充当了数据源和...

    android listView 适配器demo

    在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常配合适配器(Adapter)使用。本示例“android listView 适配器demo”将详细讲解如何利用适配器机制来动态填充ListView的数据。 首先...

    android之listview万能适配器

    "android之listview万能适配器"概念旨在创建一个通用、灵活的适配器,能够适应各种不同的数据结构和界面需求。以下将详细解析这个主题。 1. **适配器的作用**: - 适配器是`ListView`与数据模型之间的桥梁,它将...

    android listview常用适配器

    本篇文章将深入探讨Android中的BaseAdapter,它是ListView适配器的基础实现,适用于自定义复杂的列表视图。 一、BaseAdapter简介 BaseAdapter是Android提供的一个抽象类,它是所有ListView适配器的基础。开发者可以...

    Android中ListView+Adapter

    总之,理解并熟练掌握ListView与Adapter的使用是Android开发中的重要技能。ArrayAdapter适合简单的数据展示,SimpleAdapter能处理稍微复杂的结构,而BaseAdapter则提供了最大的灵活性,适用于各种定制需求。通过实践...

    android打造listview通用适配器

    在Android开发中,ListView是展示数据列表常用的组件。然而,为ListView设置适配器和创建ViewHolder经常需要重复编写相似的代码。"android打造listview通用适配器"这个主题旨在解决这个问题,通过创建一个可复用的...

    Android ListView 万能适配器

    "Android ListView 万能适配器"是解决ListView数据绑定的一种高效、灵活的方法,它能够适应多种类型的数据,使得开发者无需为每种不同的数据类型创建单独的Adapter。在本项目中,我们探讨的是一个名为"baseAdapter-...

    安卓Android源码——listview适配器优化重用.zip

    本资料主要关注Android ListView的适配器优化,尤其是重用机制,以提升用户体验。我们将深入探讨如何通过优化Adapter和实现ViewHolder模式来改善ListView的性能。 首先,理解ListView的工作原理至关重要。ListView...

    Android高级应用源码-listview 适配器 优化 重用.zip

    本资源"Android高级应用源码-listview 适配器 优化 重用.zip"聚焦于ListView的高级使用,包括适配器(Adapter)的实现、性能优化以及项(Item)的重用策略。以下是对这些关键知识点的详细解释: 1. **适配器...

    ListView的自定义适配器Adapter

    在Android开发中,ListView是一种常见的UI组件,用于展示大量数据列表。为了使ListView显示的数据更加丰富多样,我们通常需要自定义适配器(Adapter)。本文将深入探讨如何创建和使用ListView的自定义适配器,以及它...

    Android打造listview万能适配器

    在Android开发中,ListView是展示大量数据常用的组件之一。它具有高效的滚动性能,可以通过复用View来节省内存。为了使ListView能够正确显示各种不同的数据,我们需要编写一个适配器(Adapter)。本文将深入探讨如何...

    安卓开发-listview 适配器 优化 重用.zip

    在Android开发中,ListView是展示大量数据常用的组件,但如果不进行优化,可能会导致性能问题,如滚动不流畅、内存消耗过大等。本教程将聚焦于ListView的适配器(Adapter)优化与重用策略,以提升用户体验并降低资源...

    Android ListView和Adapter数据适配器的简单介绍

    Android ListView和Adapter数据适配器是Android平台上最常用的UI控件之一,用于显示大量相同格式的数据。Adapter是Android中的一种数据绑定机制,主要用于将数据绑定到UI控件上。通过使用Adapter,可以将数据绑定到...

    Android listview 适配器 优化 重用-IT计算机-毕业设计.zip

    本项目以"Android listview 适配器 优化 重用"为主题,旨在为学生提供一个实践案例,学习如何在毕业设计中优化ListView的性能。 首先,我们来讨论ListView的核心组件——适配器(Adapter)。适配器是连接数据源与...

    Android listview适配器以及提升listview的效率

    总结,优化ListView的性能和正确使用适配器是Android开发中的重要技能。`CustomListviewDemo`项目可能展示了如何实现自定义适配器、监听事件以及性能优化策略。开发者应理解这些原理,以便在实际项目中灵活运用,...

    AndroidListView的三种适配器用法

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。适配器(Adapter)是连接ListView和数据源的关键,它负责将数据转换为ListView可以显示的视图。本篇文章将详细介绍Android中ListView的三种...

    安卓Andriod源码——listview适配器优化重用.zip

    综上所述,这份资源“安卓Andriod源码——listview适配器优化重用.zip”对于理解并实践ListView的性能优化具有很高的价值,无论是ViewHolder的使用,还是点击事件的处理,都是Android开发中不可或缺的部分。...

    Android实现的ListView-ListViewAdapter(新闻列表事例)

    综上所述,"Android实现的ListView-ListViewAdapter(新闻列表事例)"是一个涵盖了Android基础组件使用、数据绑定、事件处理、性能优化等多个方面的实践案例,对于深入理解Android开发非常有帮助。通过这个实例,...

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

    本文主要介绍了xamarin Android 实现ListView万能适配器的相关知识点,包括ViewHolder的实现、泛型Adapter的实现、ListView性能优化、C#委托和Java匿名内部类的比较、ListView万能适配器的应用等。

    listview 适配器 优化 重用.zip安卓程序源码资源下载

    本资源"listview 适配器 优化 重用.zip"提供了关于ListView适配器优化和重用策略的源码示例,非常适合学生进行毕业设计、程序员学习研究,以及小公司快速开发新项目。 首先,我们来深入理解ListView的核心机制。...

Global site tag (gtag.js) - Google Analytics