`
zhuqiang5138
  • 浏览: 31921 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ListView刷新慢 注意点

阅读更多
Adapter是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。如果列表中有很多的项时会占用极大的系统资源,所以我们需要优化Adapter

1、convertView的使用
public View getView(int position, View convertView, ViewGroup parent) {  
	ViewHolder holder;  
	if (convertView == null) 
	{  
		//加载ListView item的布局文件
		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); 
		/**
		 * 利用holder,调用convertView.setTag函数
		 * 使得convertView创建的内存地址,不为空。
		 * 然后调用getTag来获得当前位置的tag
		 * 最后利用holder的各种set操作来替换当前位置的tag。
		*/
		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 {  
		private TextView text;  
		private ImageView icon;  
	} 

        上面这种方式对于每个View使用了一个ViewHolder来控制其内部的子item还使用了setTag和getTag的方法 将holder绑定到了view上而不是直接的新建View 是对Adapter的优化。

2、测试getView被调用的次数
        假设做一个动态刷新的ListView,发现显示的adapter.notifyDataSetChanged()的速度有点慢 那么可以测试下getView调用的次数 是不是太多。调用的次数多的让你觉着莫名其妙 那么说明 肯定是有问题的 一定会影响性能的。
更改方法:
<ListView android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

将android:layout_height="wrap_content"修改成:android:layout_height="fill_parent"就可以了。
如果更改以后没用,ListView周围的控件也是"wrap_content"那么也需要修改。

3、关于ListView 对于纯色的item背景 其实可以直接设置BackgroundColor 而不要使用图片 这一部分其实可以有不小的提升 同样的 对于任何纯色的背景 应该尽量去设置RGB颜色 而不是全用一张图片做背景。

参考:http://johncookie.iteye.com/blog/1250049
            http://stephen830.iteye.com/blog/1141532
分享到:
评论

相关推荐

    listView刷新

    4. 加载完成后,更新Adapter的数据集,并调用`notifyDataSetChanged()`通知ListView刷新。 5. 最后,记得将isLoadingMore设置回false。 三、动态显示时间 在ListView中动态显示时间,通常是指在每个列表项中显示...

    基于listview闪烁调试_ListView_基于listview刷新时闪烁的实例_

    本文将深入探讨如何解决ListView刷新时的闪烁问题,并通过一个具体的实例来演示解决方案。 首先,我们需要理解ListView闪烁的根本原因。主要可以归结为以下几个方面: 1. **视图复用**:ListView为了提高性能,...

    ListView动态加载刷新

    ListView是Android平台中一个常用的控件,用于展示大量数据列表,尤其在数据量较大时,动态加载和刷新功能显得尤为重要。动态加载,也称为无限滚动或懒加载,是指当用户滚动到列表底部时,ListView自动加载更多的...

    Android应用源码 ListView下拉刷新 Demo

    ListView下拉刷新功能是现代移动应用中的一个常见特性,允许用户通过下拉列表来获取最新的数据,如社交媒体的新消息或天气更新。这个"Android应用源码 ListView下拉刷新 Demo"提供了一个实际的例子,帮助开发者了解...

    ListView刷新原理及实现

    ListView是Android开发中常用的一个组件,它用于展示大量的数据列表,...通过理解并掌握以上知识点,开发者可以更有效地实现ListView的刷新功能,提升用户体验。同时,不断学习和实践,才能更好地应对各种复杂场景。

    ScrollView嵌套ListView刷新

    总的来说,解决ScrollView嵌套ListView刷新问题的关键在于合理选择和使用适合的组件,以及对滑动事件的精细控制。在实际开发中,应尽量避免不必要的嵌套,优先考虑使用NestedScrollView或RecyclerView等更现代的组件...

    Androidstudio下ListView下拉刷新

    本教程将指导你在Android Studio中为ListView实现下拉刷新功能。 1. **下拉刷新概念** 下拉刷新(Pull-to-Refresh)是一种常见的UI设计模式,允许用户通过从列表顶部向下拉动来触发数据的更新。这种功能常见于新闻...

    listview刷新

    以上就是关于“listview刷新”的主要知识点,理解并熟练应用这些知识,可以让你在开发中更高效地管理和更新ListView的内容。在实际项目中,还可以结合其他高级特性,如Header/Footer的添加、下拉刷新、上拉加载更多...

    listview刷新例子

    `listview刷新例子`这个主题聚焦于ListView的刷新机制,特别是下拉刷新功能。下拉刷新是一种常见的用户体验设计,用户可以通过下拉列表视图来触发数据的更新,这在实时数据流或者消息应用中非常常见。 在Android中...

    androidListView下拉刷新Demo

    本篇将详细探讨"androidListView下拉刷新Demo"的相关知识点。 一、下拉刷新原理 下拉刷新的基本原理是监听ListView的滑动事件,当用户上滑到ListView顶部并继续下拉时,会触发一个特定的回调函数,通常是在...

    安卓listview相关相关-三种ListView下拉刷新的样式.rar

    由于资源中的代码可能需要自行调整才能运行,以下将详细介绍ListView下拉刷新的基本概念以及可能涉及到的技术点。 1. **下拉刷新概念**: 下拉刷新(Pull-to-Refresh)是移动应用中常见的交互设计,允许用户通过在...

    ListView刷新和监听滚动事件选项事件的例子

    本示例将深入讲解如何实现ListView的刷新操作以及监听其滚动事件和选项事件。 首先,我们来看ListView的刷新。在Android中,通常使用Adapter来填充ListView的数据。当我们需要更新数据时,可以调用Adapter的`...

    ListView下拉刷新水滴效果

    总的来说,"ListView下拉刷新水滴效果"是一个结合了Android基础组件、自定义视图、触摸事件处理、动画设计和数据加载等多个技术点的综合实践。通过这样的设计,开发者可以为用户提供更加生动有趣的交互体验,提升...

    listview局部刷新Demo

    然而,当数据更新时,如果使用默认的刷新方式,ListView会重新绘制整个列表,这可能导致性能问题,特别是当列表包含大量条目时。因此,理解并实现ListView的局部刷新机制至关重要,这能够显著提升用户体验并优化应用...

    android listview下拉刷新代码

    数据加载完成后,更新Adapter的数据集,然后调用`adapter.notifyDataSetChanged()`通知ListView刷新视图,最后调用`swipeRefreshLayout.setRefreshing(false)`停止刷新动画。 4. **自定义ListView刷新** 如果不...

    通过开源项目来实现ListView的下拉刷新

    然而,为了提供更好的用户体验,很多应用都会在ListView顶部添加一个下拉刷新的功能,让用户能够方便地获取最新的数据。本篇文章将详细介绍如何利用开源项目PullToRefresh来实现ListView的下拉刷新功能。 ...

    unity的listview下拉刷新

    unity小巧插件,功能单一,用来listview的下拉刷新,操作简单

    继承ListView的下拉刷新控件

    通过运行demo,我们可以学习如何在自己的项目中集成这样的下拉刷新控件,同时也能了解自定义ListView的技巧和注意事项。 总之,下拉刷新是提高Android应用用户体验的重要功能。通过继承和扩展ListView,我们可以...

    Android中ListView动态刷新

    - 文件`GIF.gif`可能是一个示例动图,演示了ListView在调用`notifyDataSetChanged()`后动态刷新的过程,帮助理解这一操作的效果。 6. **注意事项** - 更新数据源后必须调用`notifyDataSetChanged()`,否则...

    Android ListView 下拉刷新、上拉加载

    4. 性能优化:对于大数据量的列表,可以使用ViewHolder模式减少视图复用的开销,或者使用ListView的HeaderView和FooterView来实现下拉刷新和上拉加载的界面。 总结,下拉刷新和上拉加载是Android应用中常见的功能,...

Global site tag (gtag.js) - Google Analytics