`
hunankeda110
  • 浏览: 746989 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多



• ListView视图缓存优化


• ListView异步加载优化

• ListView图片缓存

• 内存优化
[size=large][size=large]

          
• 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性能优化之视图缓存

    ListView 视图缓存性能优化 ListView 是 Android 中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。在 Android 开发中,ListView 的性能优化是一个重要的方面,本文将讨论 ...

    listview优化图片缓存例子

    本示例“listview优化图片缓存例子”将详细介绍如何利用缓存策略来提高ListView加载图片的效率。 一、图片缓存的重要性 在ListView中,由于屏幕空间有限,只有部分列表项可见。当用户滚动时,一些不再可视的列表项...

    安卓listview相关相关-listview获取网络图片缓存优化.zip

    本资料包“安卓listview相关相关-listview获取网络图片缓存优化.zip”主要探讨的就是如何在ListView中高效地加载和缓存网络图片。 首先,我们需要理解ListView的工作机制。ListView通过复用convertView(即...

    listview获取网络图片缓存优化

    "listview获取网络图片缓存优化" 主要关注如何在ListView中高效地加载和缓存网络图片,以提升用户体验。 首先,我们需要理解ListView的工作原理。ListView通过复用ViewHolder中的视图来提高滚动性能。当一个item...

    应用源码之listview获取网络图片缓存优化.zip

    这个"应用源码之listview获取网络图片缓存优化.zip"压缩包很可能包含了关于如何高效处理这个问题的源码示例。 首先,我们来探讨一下图片缓存的两个主要层次:内存缓存和磁盘缓存。内存缓存能够快速响应用户操作,...

    Android应用源码之listview获取网络图片缓存优化.rar

    本资源"Android应用源码之listview获取网络图片缓存优化.rar"提供了一种优化策略,旨在解决这个问题。 首先,我们要理解ListView的复用机制。ListView通过视图复用来提高性能,当一个列表项离开屏幕后,它的视图会...

    Android开发之listview优化+图片异步加载缓存+避免图片显示闪烁

    本篇将深入探讨如何对ListView进行优化,以及如何实现图片的异步加载和缓存策略,以避免这些问题。 **1. ListView优化** ListView的优化主要涉及以下几个方面: 1.1 **convertView复用机制**:ListView的Adapter...

    ListView显示数据视图

    它可能扩展了ListView的功能,比如提供了更方便的数据绑定方式,更丰富的视图样式,或者优化了性能。在使用DataListView时,我们需要参照其提供的API文档或者源码来了解具体的用法,如初始化、设置数据源、监听事件...

    Android应用源码之listview获取网络图片缓存优化.zip

    本资料"Android应用源码之listview获取网络图片缓存优化.zip"主要探讨了如何通过优化代码来解决这些问题,提升用户体验。 首先,我们需要理解ListView的工作原理。ListView通过复用ViewHolder中的视图来提高滚动...

    android之listview优化+分类显示

    6. **适当地使用ListView的缓存策略**:例如,通过设置`setFastScrollEnabled(true)`启用快速滚动,以及`setSmoothScrollbarEnabled(true)`平滑滚动。 接下来,我们谈谈如何实现ListView的分类显示: 分类显示通常...

    Android高级应用源码-listview获取网络图片缓存优化.zip

    这个"Android高级应用源码-listview获取网络图片缓存优化.zip"是一个示例项目,旨在解决这些问题,通过缓存机制优化ListView中加载网络图片的过程。 首先,我们来探讨一下ListView的优化策略。ListView的优化主要...

    listview获取网络图片缓存优化.zip

    "listview获取网络图片缓存优化.zip"这个压缩包文件很可能是关于如何在ListView中高效加载和缓存网络图片的实践教程或者源码示例。下面我们将深入探讨这个主题,分析相关的知识点。 1. **异步加载图片**:由于网络...

    listView快速滑动图片缓存实例

    ListView通过复用convertView(即视图池)来优化性能,当用户滚动时,不再显示的item会被回收再利用。因此,图片缓存需要确保在ListView滚动时能快速加载和显示正确图片,而不会因为频繁创建和销毁ImageView导致性能...

    ListView优化及加载图片时内存溢出

    然而,如果不进行适当的优化,ListView可能会导致性能问题,甚至触发内存溢出(OOM)异常,尤其是在加载图片时。本篇将深入探讨ListView的优化策略以及如何避免在加载图片时出现内存溢出。 1. **ListView优化策略**...

    Android应用源码之listview获取网络图片缓存优化_网络.zip

    本篇将深入探讨如何通过源码分析和实践,对ListView加载网络图片进行缓存优化。 1. 图片下载与缓存基础 - **异步加载**:为了不阻塞主线程,通常我们会使用AsyncTask或Loader在后台线程下载图片。 - **内存缓存**...

    ListView优化

    然而,由于其需要处理大量的视图复用和滚动操作,如果不进行适当的优化,可能会导致性能问题,如卡顿、滚动不流畅等。以下是ListView的三种优化方式: ### 1. 使用ViewHolder模式 ViewHolder设计模式是ListView...

Global site tag (gtag.js) - Google Analytics