`
植物大战僵尸
  • 浏览: 2756 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

浅析:ListView的动态刷新问题

 
阅读更多
也许很多开发的朋友,尤其是Android初学者,在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。

其实,在使用notifyDataSetChanged过程中,还是有细节需要注意的。举个例子:

我的ListView使用的数据源是来自ArrayList。通常我们的做法是创建一个已经有我们想要提供给ListView的数据的ArrayList,例如:
1 ArrayList<Integer> list  = new ArrayList<Interger>;
2 list.add(1);

这里我们的list已经是指向了一个堆内存上了。接着我们想要改变list中的数据,而这个时候,就需要注意了,举个例子:我们在代码中有另外一个ArrayList叫做newlist,它是使用下面代码创建出来的:
1 ArrayList<Integer> newlist  = new ArrayList<Interger>;
2 list.add(2);

这个时候,newlist指向的是一个和list指向不同的堆内存,这个时候,我们直接用list = newlist来把newlist的数据交给list,在这里,实际上只是把list的指向改变了,让它也指向newlist指向的那个内存。那么这个时候我们再调用notifyDataSetChanged这个方法来通知listview更新数据就起不了任何作用了,原因很简单,就是list的指向已经改变,而调用notifyDataSetChanged会去检查原来list指向的数据是否变化,但是这时的list已经不是原来的list了,所以它无法判断,只能不作出响应了。那么,这个问题的解决方法是直接在原来的list上面更改数据,可以使用下面的代码来操作:
1 list.clear();
2 list.addAll(newlist);
3 adapter.notifyDataSetChanged();

这样,list的指向就不会改变,它还是指向原来那块内存,这样调用notifyDataSetChanged()就可以起作用了。

总结:在这里的重点就是要注意在开始时传给ListView的list指向不能被改变,需要从始至终指向同一个内存,这样调用notifyDataSetChanged后就能够检测到list的数据变化,从而触发ListView的重新绘制了!另外,我在开发完APP都会用一些APP在线自动化测试工具进行测试:http://www.ineice.com
0
0
分享到:
评论

相关推荐

    Android_ListView动态刷新

    然而,在数据集更新时,如何实现实时或动态地刷新`ListView`,是开发者经常面临的问题。本文将围绕“Android_ListView动态刷新”这一主题,深入探讨实现`ListView`动态刷新的方法。 #### 一、透明界面的实现 在...

    Android应用源码 ListView下拉刷新 Demo

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

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

    然而,在实际操作中,我们经常会遇到ListView在刷新或滚动时出现闪烁的问题,这不仅影响用户体验,也可能是代码优化上的不足。本文将深入探讨如何解决ListView刷新时的闪烁问题,并通过一个具体的实例来演示解决方案...

    android listview 下拉刷新 动态加载数据 图文混排

    本教程将重点讲解如何在ListView中实现下拉刷新和动态加载数据的功能,同时处理图文混排的问题。 首先,我们要引入SwipeRefreshLayout库,它是Android SDK提供的一个下拉刷新框架。在`build.gradle`文件中添加以下...

    ListView动态加载刷新

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

    Android中ListView动态刷新

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

    listview局部刷新Demo

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

    主题:ListView分页(带图片)显示用法案例

    主题:ListView分页(带图片)显示用法案例,主题:ListView分页(带图片)显示用法案例

    ListView动态加载

    然而,ListView的动态加载和它与ScrollView的兼容性问题,是开发者经常遇到的挑战。下面我们将深入探讨这两个主题。 **ListView动态加载** 动态加载,也称为懒加载,是为了提高应用性能和用户体验而采用的一种策略...

    android listview局部刷新和模拟应用下载 ListView item下载 进度条下载 多个下载 局部刷新

    android ListView item下载 ListView 进度条下载 ListView多个下载 android:ListView的局部刷新 Android中自定义Adapter实现ListView动态刷新进度条 android listview局部刷新和模拟应用下载

    androidListView下拉刷新Demo

    1. 自定义实现:通过重写ListView的滚动事件,检测到用户上滑到顶部后,显示一个刷新指示器(如旋转的菊花图标),然后在后台加载新的数据,加载完成后更新ListView并隐藏刷新指示器。 2. 使用第三方库: - ...

    C#,winform,listView动态插入数据

    ### C# WinForm ListView 动态插入数据详解 在C#的WinForms应用程序开发中,`ListView` 控件是常用的一种界面元素,用于显示一系列条目,并且支持多种视图模式,如大图标、小图标、列表、详细信息等。在实际应用中...

    解决Scrollview嵌套listview下拉刷新的一些问题

    当在一个ScrollView中嵌套一个ListView时,可能会遇到一些特定的问题,尤其是在实现下拉刷新功能时。本文将深入探讨这些问题及其解决方案。 ### 问题1:滑动冲突 由于ScrollView和ListView都具有滚动功能,它们之间...

    Android程序技术:ListView的介绍.pptx

    本节课程内容:ListView的介绍 1.1 ListView控件 1.2 常用数据适配器(Adapter) 数据展示控件 ListView控件 ListView控件 The ListView control ……&gt; &lt;ListView android:id="@+id/lv" android:layout_width=...

    ListView下拉刷新水滴效果

    "ListView下拉刷新水滴效果"就是一个典型的例子,它通过动画效果使得下拉刷新的动作更加生动有趣,为用户呈现出一种动态的水滴落下的视觉体验。 实现这种效果通常涉及到自定义ViewGroup和动画的运用。关键组件是...

    酷炫ListView下拉刷新框架

    "酷炫ListView下拉刷新框架"就是这样一个工具,它使得在ListView上实现这种功能变得既简单又具有视觉吸引力。 下拉刷新框架通常包括以下组件和机制: 1. **手势识别**:框架会监听用户的下拉手势,当用户向上滑动...

    android:listview联动

    这种联动效果可以提升用户体验,使得界面更加动态和互动。 实现ListView联动的关键在于监听ListView的滚动事件和点击事件,然后根据这些事件去更新关联的组件。以下是一些关键知识点: 1. **适配器(Adapter)**: ...

    Android ListView下拉刷新 Demo.rar

    例如,旋转的刷新图标可以模拟加载进度,文字提示也可以动态改变,如“释放以刷新”到“正在刷新”。 5. **回调接口**:为了让ListView和数据源之间进行通信,可以定义一个回调接口。当刷新完成后,ListView通过回...

    Android ListView 下拉刷新、上拉加载

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

    android--ListView下拉刷新demo

    `ListView`的下拉刷新功能是提升用户体验的重要特性,特别是在处理动态加载数据的应用场景中。这个“android--ListView下拉刷新demo”就是一个实例,旨在帮助新手理解并实现这一功能。 `ListView`的下拉刷新通常...

Global site tag (gtag.js) - Google Analytics