Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。
优化的思路两种:
1. View的重用
View的每次创建是比较耗时的,因此对于getview方法传入的convertView应充分利用 != null的判断
2.ViewHolder的应用
View的findViewById()方法也是比较耗时的,因此需要考虑只调用一次,之后就用View.getTag()方法来获得ViewHolder对象
下面是优化后的代码供参考:
public class MyAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater;
public MyAdapter(Context context) {
this.mContext = context;
mInflater = LayoutInflater.from(mContext);
}
public int getCount() {
return mmsList.size();
}
public Object getItem(int arg0) {
return arg0;
}
public long getItemId(int arg0) {
return arg0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.mmslistitem, null);
holder.img = (ImageView) convertView.findViewById(R.id.mmsflag);
holder.subject = (TextView) convertView
.findViewById(R.id.mmssubject);
holder.date = (TextView) convertView.findViewById(R.id.mmsdate);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
MMSDBItem mmsItem = mmsList.get(position);
holder.subject.setText(mmsItem.getSubject());
String today = DateFormat.format("yyyy-MM-dd",
System.currentTimeMillis()).toString();
String dateStr = DateFormat.format("yyyy-MM-dd kk:mm",
mmsItem.getDate()).toString();
holder.date.setText(dateStr);
if (mmsItem.getFlag() == 0) {
holder.img.setBackgroundResource(R.drawable.new_message_32);
} else {
holder.img
.setBackgroundResource(R.drawable.message_already_read_32);
}
return convertView;
}
public final class ViewHolder {
public ImageView img;
public TextView subject;
public TextView date;
}
}
分享到:
相关推荐
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常配合适配器(Adapter)使用。本示例“android listView 适配器demo”将详细讲解如何利用适配器机制来动态填充ListView的数据。 首先...
本压缩包“listview适配器 ListViewAdapter和ViewHolder代码.rar”提供了一个简单的使用示例,帮助开发者理解和应用这两个概念。 ListViewAdapter是Android中一个专门用于ListView的适配器类,它充当了数据源和...
"Android ListView 万能适配器"是解决ListView数据绑定的一种高效、灵活的方法,它能够适应多种类型的数据,使得开发者无需为每种不同的数据类型创建单独的Adapter。在本项目中,我们探讨的是一个名为"baseAdapter-...
本篇文章将深入探讨Android中的BaseAdapter,它是ListView适配器的基础实现,适用于自定义复杂的列表视图。 一、BaseAdapter简介 BaseAdapter是Android提供的一个抽象类,它是所有ListView适配器的基础。开发者可以...
本项目以"Android listview 适配器 优化 重用"为主题,旨在为学生提供一个实践案例,学习如何在毕业设计中优化ListView的性能。 首先,我们来讨论ListView的核心组件——适配器(Adapter)。适配器是连接数据源与...
适配器(Adapter)是连接数据源和ListView的关键,它负责将数据转化为ListView可理解的视图。Android提供了三种基本的Adapter实现: 1. **ArrayAdapter**: 这是最简单的适配器,适用于简单数据结构,如字符串数组。...
Android ListView和Adapter数据适配器的简单介绍 Android ListView是Android平台上最常用的UI控件之一,用于显示大量相同格式的数据。ListView显示大量相同格式数据常用属性有:listSelector、divider、...
总结,优化ListView的性能和正确使用适配器是Android开发中的重要技能。`CustomListviewDemo`项目可能展示了如何实现自定义适配器、监听事件以及性能优化策略。开发者应理解这些原理,以便在实际项目中灵活运用,...
`ListView`的适配器(Adapter)是连接数据源和视图的关键,它负责将数据转化为可显示的视图项。"android之listview万能适配器"概念旨在创建一个通用、灵活的适配器,能够适应各种不同的数据结构和界面需求。以下将...
"android打造listview通用适配器"这个主题旨在解决这个问题,通过创建一个可复用的适配器模板,减少代码冗余,提高代码的可维护性和效率。 首先,我们要理解Adapter的作用。Adapter是ListView与数据源之间的桥梁,...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。在ListView的每个项(item)中,我们经常需要添加不同的按钮以实现多种交互功能。本篇将详细讲解如何在ListView的适配器(Adapter)中区分并...
适配器(Adapter)是连接ListView和数据源的关键,它负责将数据转换为ListView可以显示的视图。本篇文章将详细介绍Android中ListView的三种适配器:ArrayAdapter、SimpleAdapter以及BaseAdapter的用法。 ### 1. ...
本资料主要关注Android ListView的适配器优化,尤其是重用机制,以提升用户体验。我们将深入探讨如何通过优化Adapter和实现ViewHolder模式来改善ListView的性能。 首先,理解ListView的工作原理至关重要。ListView...
本资源"Android高级应用源码-listview 适配器 优化 重用.zip"聚焦于ListView的高级使用,包括适配器(Adapter)的实现、性能优化以及项(Item)的重用策略。以下是对这些关键知识点的详细解释: 1. **适配器...
Android ListView的优化,在做Android项目的时候,在用到ListView 界面及数据显示,这个时候如果资源过大,对项目来说,用户体验肯定是不好的,这里就对如何优化做了详细介绍: Adapter的作用就是ListView界面与数据...
为了使ListView显示的数据更加丰富多样,我们通常需要自定义适配器(Adapter)。本文将深入探讨如何创建和使用ListView的自定义适配器,以及它的工作原理。 首先,我们要理解适配器在ListView中的角色。适配器是...
综上所述,这份资源“安卓Andriod源码——listview适配器优化重用.zip”对于理解并实践ListView的性能优化具有很高的价值,无论是ViewHolder的使用,还是点击事件的处理,都是Android开发中不可或缺的部分。...
本资料包"安卓listview相关相关-listview适配器优化重用.rar"可能包含了一些关于如何优化ListView适配器以实现重用机制的示例代码。 1. **ListView的工作原理** - ListView通过一个名为Adapter的数据绑定组件来...
本资源"listview 适配器 优化 重用.zip"提供了关于ListView适配器优化和重用策略的源码示例,非常适合学生进行毕业设计、程序员学习研究,以及小公司快速开发新项目。 首先,我们来深入理解ListView的核心机制。...