1、数据源没有更新,调用notifyDataSetChanged无效。
2、数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效。
3、数据源更新了,但是adpter没有收到消息通知,无法动态更新列表。
第一点就不说了 第二点网上也有很多资料可以参考
http://blog.youkuaiyun.com/williamz1980/article/details/5837998
我碰到最头碰是第三种
项目情景:有一个listView给他添加一个HeadView , Headview的控件有一个GridView,当点击ListView中的Item时要将Iten加入到HeadView的GridView中 在模拟器上都没有问题但是在真机上时发现 将ListView下拉到底部,这个时候HeadView已经不再界面上了 ,点击listView的Item ,这个时候GridView不刷新界面。deBug发现list的数据源已经更新了 Adapter也不为空notifyDataSetChanged()方法也调用了 但是就是不刷新界面 , Adapter的getView()方法也不调用 ,所以应该是属于第三种数据源更新 但是adapter没有收到刷新通知 这个时候重新调用setAdapter()方法 即:
if(mHeadAdapter != null){ headGridview.setAdapter(mHeadAdapter); mHeadAdapter.notifyDataSetChanged(); }在notifyDataSetChanged()方法前先setAdapter;
本文探讨了Android开发中ListView与Adapter交互时遇到的界面不刷新问题。特别关注了数据源已更新但Adapter未能正确接收更新通知的情况,并提供了一种通过重新设置Adapter来触发界面刷新的有效解决方案。
1148

被折叠的 条评论
为什么被折叠?



