`
hunankeda110
  • 浏览: 742411 次
  • 性别: 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 的性能优化是一个重要的方面,本文将讨论 ...

    [Android]ListView性能优化之视图缓存

    Android开发之ListView适配器(Adapter)优化Android开发——09GoogleI/O之让AndroidUI性能更高效(1)PDF下载:GoogleIO.pdfActivity代码说明:模拟一千条数据,TestAdapter继承自BaseAdapter,main.xml见文章末尾...

    聊天窗口实现

    聊天窗口小项目,实现ListView显示多种视图,图片加载三级缓存,几种自定义视图,聊天界面切换过度自然。

    Android帮助文档及一些资料打包放送

    [Android]ListView性能优化之视图缓存(续) - 农民伯伯 - 博客园.mht559.22 KB [Android]为Spinner填充数据后设置默认值的问题 - 农民伯伯 - 博客园.mht352.91 KB [Android]使用ActivityGroup来切换Activity和Layout ...

    UGUISuperScrollView v2.5.3

    它功能强大,性能经过高度优化。 特点: - 列表视图和网格视图 - 交错视图。垂直/水平视图可用于 创建网格视图,其中项目具有不同的高度/宽度 - GridView 可以同时垂直和水平滚动 - 无限项目 -不同尺寸(高度/宽度)...

    Android应用源码安卓初学者必敲基础项目

    实现了多线程异步加载图片并更新视图,项目虽然涉及的功能并不多,但是作者在注释方面非常用心,注释的很丰富对新手学习ListView、Json、多线程、异步加载、文件缓存等安卓基础知识很有帮助,建议每位初学者都敲一边...

    Android 图片缓存机制的深入理解

    很多情况下(像ListView、GridView或ViewPager等组件),屏幕上已显示的图片和即将滑动到当前屏幕上的图片数量基本上是没有限制的。 这些组件通过重用已经移除屏幕的子视图来将降低内存的使用,垃圾回收器也会及时...

    华为Android面试题1

    ListView 的优化可以使用缓存、异步加载、图片压缩等技术。 在独立完成项目时,开发者需要按照需求分配任务,根据实际情况选择合适的技术栈,进行项目规划、设计、开发、测试等步骤。 在分配任务时,需要根据同事...

    RecyclerView:recyclerview + cardview

    这是Android5.0 新特性,主要用来替代ListView的使用,在RecyclerView标准化了ViewHolder类似于ListView中convertView用来做视图缓存. 可以通过设置LayoutManager来快速实现listview、gridview、瀑布流的效果,而且还...

    UGUI Super ScrollView v2.4.4.unitypackage

    它非常强大,并且对性能进行了高度优化。 特点: ——StaggeredGridView。一个垂直/水平的StaggeredGridView可以用来创建项目有不同的高度/宽度的GridView,如Pinterest —ListView和GridView ——无限的物品 -不同...

    uberbackbone:一组增强的backbone.js 视图、模型和集合

    UberBackbone.View 这种增强的视图允许在基本主干视图中找不到的多种功能管理子视图自动附加外部html模板在标有数据绑定属性的模板 dom 元素上自动缓存 jQuery 对象模型-视图结合使用或UberBackbone.ListView 提供...

    VurbChallenge

    优化在视图中存储视图并行运行任务缓存图像创建新类型的卡片出于可扩展性的目的,以下是将来添加新类型的步骤。 为此类型创建一个新模型。 可选择扩展通用 Card 类型类创建一个 xml 页面并在 CardViews.java 中添加...

    extended_list:扩展列表(ListViewGridView)支持跟踪收集子视图端口索引的垃圾,在加载更多子项的情况下将lastChild构造为特殊子项,并允许布局接近尾随

    扩展列表(ListView / GridView)支持跟踪收集子项/视口索引的垃圾,在加载更多/没有更多项的情况下将lastChild构造为特殊子项,并允许布局接近尾随。 用 将库添加到您的pubspec.yaml dependencies : extended_...

    android开发demo集合

    6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner ...

    android初学者入门项目

    6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner ...

    Super ScrollView for UGUI 2.2.2一款unity3d非常强大的滑动制作插件

    这是非常强大的和高度优化的性能。 文件 Android演示应用程序 演示: - 聊天消息列表演示 - 水平画廊演示 - 垂直画廊演示 - GridView演示 - PageVew演示 - TreeVew演示 - 与稠粘头演示的TreeView - ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    手动优化了PDF的书签,书签可折叠,书签链接以目录方式保存,多达1000多页,每页都做了书签定位,手都累酸啦。 ============================== 因权限只能到60MB,分卷压缩了,共3个压缩包,需下载完3个一起解压, ...

    双缓冲树和列表视图

    实现本机WinForms无闪烁的TreeView和ListView后代

    ASP.NET4高级程序设计(第4版) 3/3

    10.7 ListView 336 10.7.1 分组 338 10.7.2 分页 340 10.8 DetailsView和FormView 341 10.8.1 DetailsView 341 10.8.2 FormView 344 10.9 高级网格 345 10.9.1 GridView中的汇总 345 10.9.2 单个表...

Global site tag (gtag.js) - Google Analytics