1、数据源没有更新,调用notifyDataSetChanged无效。
2、数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效。
3、数据源更新了,但是adpter没有收到消息通知,无法动态更新列表。
第一点就不说了 第二点网上也有很多资料可以参考
http://blog.csdn.net/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;