adapter的notifyDataSetChanged()无效

来源:互联网 发布:pc蛋蛋连中20期算法 编辑:程序博客网 时间:2024/06/15 04:31

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;
原创粉丝点击