对数据操作后,设置了adapter.notifyDataSetChanged() ListView数据不更新
2015-04-16 22:59
232 查看
对数据操作后,设置了adapter.notifyDataSetChanged() ListView数据不更新
public void oncreate(){collectDao dao=new collectDao(this);
collects= dao.findAll(); //实现数据查询,这里我将方法封装在dao里面了。
adapter=new MyAdapter();
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
上面的方法我是重写在oncreate()里面,我实现的是收藏功能,然后取消收藏了,但是ListView内容不更新。
跟朋友讨论得到了答案,activity生命周期是 oncreate()->onstart()->onresume()->onpause()->onstop()->ondestroy,
当你从取消的activity跳到这个activity,除非你用standard模式来加载,这样数据会更新,但是会创建太多的activity,
你返回的时候回觉得太繁琐了,但是你用singleTask来加载的话,你会发现数据不更新,这时候你应该重写onresume()方法。
public void onResume(){
collectDao dao=new collectDao(this);
collects= dao.findAll();
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
super.onResume();
}
这个问题困扰我好久,但是想想确实是这样的,遇到这样困惑的人,希望能给你们帮助吧
---------------------------------------------------------------------------------分割线-----------------------------------------------------------
这已经是去年的帖子了,那时候我还在了解activity的生命周期,话说过了这么久,其实我好像在android方面没有懂什么,说来惭愧呀,哎,自己的经历真的是一把辛酸泪。在此劝告应届生不要因为急着找工作,就随便选一家公司,要知道你刚毕业或者即将毕业,在学校是不会学到什么东西的,当然也有一些在学校很努力的,底子会好很多。不管怎样,还是找一个有开发经验的工作人员的公司吧,有个工作经验的带你,你会成长很快,由于你刚出来,外面的世界都是新的,即使项目的代码你还有很多不懂,但是你是充满好奇心的,相信只要接触了,离懂就不会很远了。
下面我修改我以前的观点,我们知道启动一个activity(或者说让当前activity为前台,就是让我们能够看得到)一定会调用onResume方法的,我上面这样写,如楼下评论的那样,真的没必要,我打开activity后,首先调用的onCreate方法,这里面我已经对数据进行的处理,后面会调用onResume方法,没必要调用两次,只需要在onNewIntent里写这个操作了,因为A activity 在栈中只是在B activity下面,此时B activity处于前台,此时需要让A activity从后台调到前台,且重新加载A
activity的数据,这时候是不会调用OnCreate 方法,当利用Intent到A activity后,A activity就为前台了,此时会调用onNewIntent()->onRestart()->onStart()->onResume(), 所以写在 onNewIntent()里面。
其实也完全没必要写在onNewIntent()里,为什么这么说呢,因为一个activity要想在前台,必须经历onResume,相反一个activity在后台也会回调onPause(),所以在这里面写上逻辑代码就可以了,至于onCreate()只要在里面初始化一些工作,绑定布局。
相关文章推荐
- 关于ListView中使用自定义Adapter及时更新数据
- Adapter类型控件之ListView的数据更新问题
- 安卓探究ListView+Adapter数据在工作线程中更新引发的crash以及解决方法(三)
- 【android】Cursor记录集游标、ListView和SimpleCursorAdapter、ListView数据动态更新
- Contentprovider,CursorAdapter更新数据后自动刷新ListView
- android使用notifyDataSetChanged()方法,adapter的数据更新了,但是ListView的内容没有更新;
- listview adapter使用,及与recycleView数据更新的比较分析
- Android ListView SimpleAdapter ArrayList 数据更新问题
- android使用notifyDataSetChanged()方法,adapter的数据更新了,但是ListView的内容没有更新;
- ListView常用的simpleAdapter适配已经添加删除数据的操作
- 安卓探究ListView+Adapter数据在工作线程中更新引发的crash以及解决方法(一)
- android使用notifyDataSetChanged()方法更新数据失效,adapter的数据更新了,但是ListView的内容没有更新;
- [转载]ListView中使用自定义Adapter及时更新数据
- ListView中使用自定义Adapter及时更新数据
- 【Android笔记-异常-4】定义一个临时的数组变量承接数据,ListView的数据以及通知数据更新要放到同一个线程(主线程)。避免出现异常"The content of the adapter
- 安卓探究ListView+Adapter数据在工作线程中更新引发的crash以及解决方法(二)
- Android listview 列表更新数据+重写adapter
- android使用notifyDataSetChanged()方法,adapter的数据更新了,但是ListView的内容没有更新
- android基础笔记——监听数据变化,即时更新ListView:adapter.notifyDataSetChanged();
- Android操作数据的动态更新ListView