• 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 是 Android 中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。在 Android 开发中,ListView 的性能优化是一个重要的方面,本文将讨论 ...
Android开发之ListView适配器(Adapter)优化Android开发——09GoogleI/O之让AndroidUI性能更高效(1)PDF下载:GoogleIO.pdfActivity代码说明:模拟一千条数据,TestAdapter继承自BaseAdapter,main.xml见文章末尾...
聊天窗口小项目,实现ListView显示多种视图,图片加载三级缓存,几种自定义视图,聊天界面切换过度自然。
[Android]ListView性能优化之视图缓存(续) - 农民伯伯 - 博客园.mht559.22 KB [Android]为Spinner填充数据后设置默认值的问题 - 农民伯伯 - 博客园.mht352.91 KB [Android]使用ActivityGroup来切换Activity和Layout ...
它功能强大,性能经过高度优化。 特点: - 列表视图和网格视图 - 交错视图。垂直/水平视图可用于 创建网格视图,其中项目具有不同的高度/宽度 - GridView 可以同时垂直和水平滚动 - 无限项目 -不同尺寸(高度/宽度)...
实现了多线程异步加载图片并更新视图,项目虽然涉及的功能并不多,但是作者在注释方面非常用心,注释的很丰富对新手学习ListView、Json、多线程、异步加载、文件缓存等安卓基础知识很有帮助,建议每位初学者都敲一边...
很多情况下(像ListView、GridView或ViewPager等组件),屏幕上已显示的图片和即将滑动到当前屏幕上的图片数量基本上是没有限制的。 这些组件通过重用已经移除屏幕的子视图来将降低内存的使用,垃圾回收器也会及时...
ListView 的优化可以使用缓存、异步加载、图片压缩等技术。 在独立完成项目时,开发者需要按照需求分配任务,根据实际情况选择合适的技术栈,进行项目规划、设计、开发、测试等步骤。 在分配任务时,需要根据同事...
这是Android5.0 新特性,主要用来替代ListView的使用,在RecyclerView标准化了ViewHolder类似于ListView中convertView用来做视图缓存. 可以通过设置LayoutManager来快速实现listview、gridview、瀑布流的效果,而且还...
它非常强大,并且对性能进行了高度优化。 特点: ——StaggeredGridView。一个垂直/水平的StaggeredGridView可以用来创建项目有不同的高度/宽度的GridView,如Pinterest —ListView和GridView ——无限的物品 -不同...
UberBackbone.View 这种增强的视图允许在基本主干视图中找不到的多种功能管理子视图自动附加外部html模板在标有数据绑定属性的模板 dom 元素上自动缓存 jQuery 对象模型-视图结合使用或UberBackbone.ListView 提供...
优化在视图中存储视图并行运行任务缓存图像创建新类型的卡片出于可扩展性的目的,以下是将来添加新类型的步骤。 为此类型创建一个新模型。 可选择扩展通用 Card 类型类创建一个 xml 页面并在 CardViews.java 中添加...
扩展列表(ListView / GridView)支持跟踪收集子项/视口索引的垃圾,在加载更多/没有更多项的情况下将lastChild构造为特殊子项,并允许布局接近尾随。 用 将库添加到您的pubspec.yaml dependencies : extended_...
6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner ...
6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner ...
这是非常强大的和高度优化的性能。 文件 Android演示应用程序 演示: - 聊天消息列表演示 - 水平画廊演示 - 垂直画廊演示 - GridView演示 - PageVew演示 - TreeVew演示 - 与稠粘头演示的TreeView - ...
手动优化了PDF的书签,书签可折叠,书签链接以目录方式保存,多达1000多页,每页都做了书签定位,手都累酸啦。 ============================== 因权限只能到60MB,分卷压缩了,共3个压缩包,需下载完3个一起解压, ...
实现本机WinForms无闪烁的TreeView和ListView后代
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 单个表...