android studio编程时出现的错误:ListView重新载入后,更新数据或者再次进入该ListView加载数据,数据不显示 解决方法

以下几种问题的解决办法:

(1) 当ListView第一次载入的时候,并加载数据,可以显示,但是,当用返回键后或者进入其他Activity时,然后再次进入该Activity后,那些数据就不显示了;

(2) 从另个界面跳转listview回来后,再调用notifyDataSetChanged()方法时失效,adapter的数据更新了,但listview显示的内容并没有改变;

(3)ListView数据更新了,无法动态更新列表。

................................

上面这个问题让我琢磨了整天,退出ListView的Activity再次进入加载LIstView数据居然不显示了,后来百度来百度去一直找不到解决办法,找到了相同问题的但又不给出解决办法,不过还是有了些思路,原因是:第一次进入activity可以的,按返回键后,再次进入的时候不显示数据原因:第一次进入调用了onCreate()方法,当这个Activiy失去焦点,即你跳转到了其他页面,当返回时这个Activity不会执行onCreate(),方法,这时得到焦点,执行onResume()方法,所以你可以重写这个onResume()方法,在这个方法里面用上面讲到的那个方法就可以了。

红色这句话是来自http://m.blog.csdn.net/blog/ligengk/38959567;可以去看看,但是这篇文章只说重写onResume这个方法,却不说怎么重写,不过也有了思路,因为再次进入该Activity不是从onCreate这个方法开始的,那就是说先前在onCreate里绑定的adapter方法没有执行,就意味着listView没有绑定adapter;所以就不可能有数据显示了;

onResume的作用是Activity开始和用户交互的时候调用,刷新UI,所以在该方法中重新绑定adapter;数据就会显示了

如:


ArrayList BookInfo_list = new ArrayList();

/**
 * Activity开始和用户交互的时候调用,刷新UI
 */
@Override
protected void onResume() {
    super.onResume();

    Listview = (LoadListView) findViewById(R.id.listview);
    adapter = new LoaderAdapter(this, BookInfo_list);
    Listview.setAdapter(adapter);
    adapter.notifyDataSetChanged();    //重绘当前可见区域

}



PS:这个问题归根到底还是对 Activity的生命周期 不熟悉,要复习复习~



你可能感兴趣的:(android studio编程时出现的错误:ListView重新载入后,更新数据或者再次进入该ListView加载数据,数据不显示 解决方法)