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
分享到:
相关推荐
4. 加载完成后,更新Adapter的数据集,并调用`notifyDataSetChanged()`通知ListView刷新。 5. 最后,记得将isLoadingMore设置回false。 三、动态显示时间 在ListView中动态显示时间,通常是指在每个列表项中显示...
本文将深入探讨如何解决ListView刷新时的闪烁问题,并通过一个具体的实例来演示解决方案。 首先,我们需要理解ListView闪烁的根本原因。主要可以归结为以下几个方面: 1. **视图复用**:ListView为了提高性能,...
ListView是Android平台中一个常用的控件,用于展示大量数据列表,尤其在数据量较大时,动态加载和刷新功能显得尤为重要。动态加载,也称为无限滚动或懒加载,是指当用户滚动到列表底部时,ListView自动加载更多的...
ListView下拉刷新功能是现代移动应用中的一个常见特性,允许用户通过下拉列表来获取最新的数据,如社交媒体的新消息或天气更新。这个"Android应用源码 ListView下拉刷新 Demo"提供了一个实际的例子,帮助开发者了解...
ListView是Android开发中常用的一个组件,它用于展示大量的数据列表,...通过理解并掌握以上知识点,开发者可以更有效地实现ListView的刷新功能,提升用户体验。同时,不断学习和实践,才能更好地应对各种复杂场景。
总的来说,解决ScrollView嵌套ListView刷新问题的关键在于合理选择和使用适合的组件,以及对滑动事件的精细控制。在实际开发中,应尽量避免不必要的嵌套,优先考虑使用NestedScrollView或RecyclerView等更现代的组件...
本教程将指导你在Android Studio中为ListView实现下拉刷新功能。 1. **下拉刷新概念** 下拉刷新(Pull-to-Refresh)是一种常见的UI设计模式,允许用户通过从列表顶部向下拉动来触发数据的更新。这种功能常见于新闻...
以上就是关于“listview刷新”的主要知识点,理解并熟练应用这些知识,可以让你在开发中更高效地管理和更新ListView的内容。在实际项目中,还可以结合其他高级特性,如Header/Footer的添加、下拉刷新、上拉加载更多...
`listview刷新例子`这个主题聚焦于ListView的刷新机制,特别是下拉刷新功能。下拉刷新是一种常见的用户体验设计,用户可以通过下拉列表视图来触发数据的更新,这在实时数据流或者消息应用中非常常见。 在Android中...
本篇将详细探讨"androidListView下拉刷新Demo"的相关知识点。 一、下拉刷新原理 下拉刷新的基本原理是监听ListView的滑动事件,当用户上滑到ListView顶部并继续下拉时,会触发一个特定的回调函数,通常是在...
由于资源中的代码可能需要自行调整才能运行,以下将详细介绍ListView下拉刷新的基本概念以及可能涉及到的技术点。 1. **下拉刷新概念**: 下拉刷新(Pull-to-Refresh)是移动应用中常见的交互设计,允许用户通过在...
本示例将深入讲解如何实现ListView的刷新操作以及监听其滚动事件和选项事件。 首先,我们来看ListView的刷新。在Android中,通常使用Adapter来填充ListView的数据。当我们需要更新数据时,可以调用Adapter的`...
总的来说,"ListView下拉刷新水滴效果"是一个结合了Android基础组件、自定义视图、触摸事件处理、动画设计和数据加载等多个技术点的综合实践。通过这样的设计,开发者可以为用户提供更加生动有趣的交互体验,提升...
然而,当数据更新时,如果使用默认的刷新方式,ListView会重新绘制整个列表,这可能导致性能问题,特别是当列表包含大量条目时。因此,理解并实现ListView的局部刷新机制至关重要,这能够显著提升用户体验并优化应用...
数据加载完成后,更新Adapter的数据集,然后调用`adapter.notifyDataSetChanged()`通知ListView刷新视图,最后调用`swipeRefreshLayout.setRefreshing(false)`停止刷新动画。 4. **自定义ListView刷新** 如果不...
然而,为了提供更好的用户体验,很多应用都会在ListView顶部添加一个下拉刷新的功能,让用户能够方便地获取最新的数据。本篇文章将详细介绍如何利用开源项目PullToRefresh来实现ListView的下拉刷新功能。 ...
unity小巧插件,功能单一,用来listview的下拉刷新,操作简单
通过运行demo,我们可以学习如何在自己的项目中集成这样的下拉刷新控件,同时也能了解自定义ListView的技巧和注意事项。 总之,下拉刷新是提高Android应用用户体验的重要功能。通过继承和扩展ListView,我们可以...
- 文件`GIF.gif`可能是一个示例动图,演示了ListView在调用`notifyDataSetChanged()`后动态刷新的过程,帮助理解这一操作的效果。 6. **注意事项** - 更新数据源后必须调用`notifyDataSetChanged()`,否则...
4. 性能优化:对于大数据量的列表,可以使用ViewHolder模式减少视图复用的开销,或者使用ListView的HeaderView和FooterView来实现下拉刷新和上拉加载的界面。 总结,下拉刷新和上拉加载是Android应用中常见的功能,...