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”提供了一个简单的使用示例,帮助开发者理解和应用这两个概念。 ListViewAdapter是Android中一个专门用于ListView的适配器类,它充当了数据源和...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常配合适配器(Adapter)使用。本示例“android listView 适配器demo”将详细讲解如何利用适配器机制来动态填充ListView的数据。 首先...
"android之listview万能适配器"概念旨在创建一个通用、灵活的适配器,能够适应各种不同的数据结构和界面需求。以下将详细解析这个主题。 1. **适配器的作用**: - 适配器是`ListView`与数据模型之间的桥梁,它将...
本篇文章将深入探讨Android中的BaseAdapter,它是ListView适配器的基础实现,适用于自定义复杂的列表视图。 一、BaseAdapter简介 BaseAdapter是Android提供的一个抽象类,它是所有ListView适配器的基础。开发者可以...
在Android开发中,ListView是展示数据列表常用的组件。然而,为ListView设置适配器和创建ViewHolder经常需要重复编写相似的代码。"android打造listview通用适配器"这个主题旨在解决这个问题,通过创建一个可复用的...
总之,理解并熟练掌握ListView与Adapter的使用是Android开发中的重要技能。ArrayAdapter适合简单的数据展示,SimpleAdapter能处理稍微复杂的结构,而BaseAdapter则提供了最大的灵活性,适用于各种定制需求。通过实践...
"Android ListView 万能适配器"是解决ListView数据绑定的一种高效、灵活的方法,它能够适应多种类型的数据,使得开发者无需为每种不同的数据类型创建单独的Adapter。在本项目中,我们探讨的是一个名为"baseAdapter-...
本资料主要关注Android ListView的适配器优化,尤其是重用机制,以提升用户体验。我们将深入探讨如何通过优化Adapter和实现ViewHolder模式来改善ListView的性能。 首先,理解ListView的工作原理至关重要。ListView...
在Android开发中,ListView是一种常见的UI组件,用于展示大量数据列表。为了使ListView显示的数据更加丰富多样,我们通常需要自定义适配器(Adapter)。本文将深入探讨如何创建和使用ListView的自定义适配器,以及它...
本资源"Android高级应用源码-listview 适配器 优化 重用.zip"聚焦于ListView的高级使用,包括适配器(Adapter)的实现、性能优化以及项(Item)的重用策略。以下是对这些关键知识点的详细解释: 1. **适配器...
在Android开发中,ListView是展示大量数据常用的组件之一。它具有高效的滚动性能,可以通过复用View来节省内存。为了使ListView能够正确显示各种不同的数据,我们需要编写一个适配器(Adapter)。本文将深入探讨如何...
在Android开发中,ListView是展示大量数据常用的组件,但如果不进行优化,可能会导致性能问题,如滚动不流畅、内存消耗过大等。本教程将聚焦于ListView的适配器(Adapter)优化与重用策略,以提升用户体验并降低资源...
总结,优化ListView的性能和正确使用适配器是Android开发中的重要技能。`CustomListviewDemo`项目可能展示了如何实现自定义适配器、监听事件以及性能优化策略。开发者应理解这些原理,以便在实际项目中灵活运用,...
Android ListView和Adapter数据适配器是Android平台上最常用的UI控件之一,用于显示大量相同格式的数据。Adapter是Android中的一种数据绑定机制,主要用于将数据绑定到UI控件上。通过使用Adapter,可以将数据绑定到...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。适配器(Adapter)是连接ListView和数据源的关键,它负责将数据转换为ListView可以显示的视图。本篇文章将详细介绍Android中ListView的三种...
本项目以"Android listview 适配器 优化 重用"为主题,旨在为学生提供一个实践案例,学习如何在毕业设计中优化ListView的性能。 首先,我们来讨论ListView的核心组件——适配器(Adapter)。适配器是连接数据源与...
综上所述,"Android实现的ListView-ListViewAdapter(新闻列表事例)"是一个涵盖了Android基础组件使用、数据绑定、事件处理、性能优化等多个方面的实践案例,对于深入理解Android开发非常有帮助。通过这个实例,...
综上所述,这份资源“安卓Andriod源码——listview适配器优化重用.zip”对于理解并实践ListView的性能优化具有很高的价值,无论是ViewHolder的使用,还是点击事件的处理,都是Android开发中不可或缺的部分。...
本文主要介绍了xamarin Android 实现ListView万能适配器的相关知识点,包括ViewHolder的实现、泛型Adapter的实现、ListView性能优化、C#委托和Java匿名内部类的比较、ListView万能适配器的应用等。
本资料包"安卓listview相关相关-listview适配器优化重用.rar"可能包含了一些关于如何优化ListView适配器以实现重用机制的示例代码。 1. **ListView的工作原理** - ListView通过一个名为Adapter的数据绑定组件来...