`

关于ListView不刷新 (notifydatasetchanged无效的问题)

 
阅读更多
是的,我在被困几个小时后发现了原因,各种调试未果。

然后还是决定在网上查:
查到了:
listview中adapter的数据是放在 list里的。当刷新数据时,去服务器请求到新数据,然后
传给list。代码是在新线程里得到新数据集合list2,然后在handler里令list=list2,以为这样就可以了,
但adapter.notifyDataSetChanged无效。
原因:list里的内容并没有变。
解决方案:list.addAll(list2);确保list变化即可。

然后恍然大悟,
原因就是我是直接新的数据
List<E> oldData  = new ArrayList<E>();
....
listView.setAdater(oldData, ....)

在处理后我用了oldData = newData. 然后notifyDataSetChanged
而这就是错误的原因。listView不会认为这里数据没有变化。

正确做法是oldData.clear();  oldData.addAll(newData).
然后notifyDataSetChanged
分享到:
评论

相关推荐

    浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新

    总结起来,`notifyDataSetChanged()`不刷新问题通常源于数据源与Adapter数据的同步问题。在数据变更后,必须确保Adapter内部的数据引用也相应更新,这样才能正确触发ListView的刷新。同时,确保`getView()`方法能...

    Gallery异步加载图片和listView动态刷新 .rar

    项目中可能实现了ListView的onDataSetChanged()方法,或者利用了AbsListView的notifyDataSetChanged()通知数据集已改变,从而触发列表的自动刷新。 为了优化ListView的性能,项目可能还使用了ViewHolder设计模式,...

    Android 调用notifyDataSetChanged方法失败解决办法

    一、数据源没有更新,调用notifyDataSetChanged无效 这是Android 调用notifyDataSetChanged方法失败的最常见原因。当我们更新数据源时,如果没有真正地更新数据,notifyDataSetChanged方法将不会生效。例如,如果...

    ListViewTest

    `ListViewTest`可能是开发者创建的一个项目或测试用例,旨在解决在更新ListView时`adapter.notifyDataSetChanged()`方法不起作用的问题。`adapter.notifyDataSetChanged()`是ListView适配器的一个关键方法,用于通知...

    Android高级应用源码-XListview实现上拉刷新下拉加载功能.zip

    - 用户在ListView底部滑动到不能再滑动的位置时,可以通过向上拉动ListView来触发刷新操作。 - 这个过程通常伴随着一个动画,如旋转的刷新图标,表示正在加载新数据。 - XListView通过监听滑动事件和滚动状态,...

    android ListView的单个item滑动并出现删除按钮

    这包括从数据源中移除对应的数据项,更新Adapter,并调用notifyDataSetChanged()通知ListView刷新视图。同时,也可以添加一个滑动回原位的动画,以增强用户体验。 5. **防止误触**: 为了避免用户在滑动过程中误...

    RefreshListView_demo

    一旦数据加载完成,应更新ListView的数据集,并调用相应的适配器方法(如notifyDataSetChanged())来刷新列表显示。同样,对于LoadMoreListView,需要监听滚动事件,当检测到用户到达列表底部时,启动加载更多数据的...

    高级布局篇1

    RecycleView的刷新机制则更加智能,每个item都有自己的观察者,只在数据实际改变时才通知更新,避免了无效的刷新操作。刷新方法包括: - 全部刷新:`notifyDataSetChanged()` - 指定item刷新:`notifyItemChanged...

    自定义搜素框控件

    3. 显示热词:根据用户的输入,过滤出匹配的热词,更新ListView的数据源并调用notifyDataSetChanged()通知ListView刷新。可以使用Filterable接口实现数据过滤。 三、实现自动补全 1. 使用AutoCompleteTextView:...

Global site tag (gtag.js) - Google Analytics