`

(转)Android开发之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通用适配器

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

    Android中ListView+Adapter

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

    Android ListView 万能适配器

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

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

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

    ListView的自定义适配器Adapter

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

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

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

    Android打造listview万能适配器

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

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

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

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

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

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

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

    AndroidListView的三种适配器用法

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

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

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

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

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

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

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

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

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

    安卓listview相关相关-listview适配器优化重用.rar

    本资料包"安卓listview相关相关-listview适配器优化重用.rar"可能包含了一些关于如何优化ListView适配器以实现重用机制的示例代码。 1. **ListView的工作原理** - ListView通过一个名为Adapter的数据绑定组件来...

Global site tag (gtag.js) - Google Analytics