在Activity的onResume()方法中更新ListView

来源:互联网 发布:淘宝卖家有什么好软件 编辑:程序博客网 时间:2024/06/06 02:21

描述:
今天在做一个功能的时候,从Aactivity跳到Bactivity。
由于Bactivity的操作,影响了Aactivity的数据,所以再回到A的时候,需要A能够进行刷新操作。
但是默认跳回去的时候,A界面还是上次那个。

解决方案:
重写Aactivity的onResume()方法,在onResume()方面里进行刷新操作。因为按照activity的生命周期模型,当activity恢复的时候,onResume()方法会被调用,所以这是一个刷新的好机会。



我发现app刚打开的时候就开始调用onResume(),所以里面如果直接调用adapter.notifyDataSetChanged()的话,app一运行就挂掉了,报java.lang.NullPointerException,原因是此时ListAdapter还未实例化,所以报空指针,解决办法就是先用if判断adapter是否为null


不过为啥app刚开始运行就调用onResume()我还不知道,学完Activity生命周期再说吧



另外关于ListView的刷新方法notifyDataSetChanged(),直接用Adapter调用是没用的,使用前要先更新Adapter使用的List数据,然后再用Adapter调用notifyDataSetChanged()方法


@Overrideprotected void onResume() {super.onResume();if(adapter != null){playerList.clear();playerList.addAll(DBOperate.getInstance(MainActivity.this).queryAll());adapter.notifyDataSetChanged();}}


http://gundumw100.iteye.com/blog/1738829

原创粉丝点击