我在做android开发,遇到了这样的一个问题:在调接口获取数据后,我使用了Handler对Adapter进行更新,偶尔会出现闪退问题,闪退问题是说:
java.lang.IllegalStateException:适配器的内容已更改但ListView未收到通知.确保不从后台线程修改适配器的内容,而只是从UI线程修改.[在ListView(2131034188,类android.widget.ListView)中使用Adapter(类.MainActivity $ ListAdapter)]
在网上也看了很多,没有能解决掉这个问题,不知道有没有哪位伙伴能帮忙下,谢谢!
代码结构大概如下:
private String mHandler;
private MyAdapter adapter;
Handler handler = new Hanlder(){
switch(msg.what){
case 1:
adapter.notifydatasetchanged();
break;
}
}
private void getList(){
boolean flag = api; //调用api的方法返回值是true还是false,true接口会返回数据,false会返回错误的提示
if(flag){
Message msg= new Message();
msg.what = 1;
mHandler.sendMessage(msg);
}
}
private class MyAdapter extends BaseAdapter{
}
以上只是一个简单的结构,伙伴们不要较真代码,列表调用getList()方法,在方法里调用api接口获取数据,得到的数据通过hanlder进行适配器的更新 adapter.notifydatasetchanged();偶尔会出现我上述所说的闪退,【别问有没有初始化,初始化都在create方法里】