listview更新数据时报异常

来源:互联网 发布:彩票计划网站源码 编辑:程序博客网 时间:2024/05/16 09:58
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: FATAL EXCEPTION: main
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: Process: com.zhyq.movefilelib, PID: 13822
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make sure your adapter calls notifyDataSetChanged() when its content changes. [in ListView(-1, class com.zhyq.movefilelib.base.ScrollOverListView) with Adapter(class android.widget.HeaderViewListAdapter)]
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.widget.ListView.layoutChildren(ListView.java:1555)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.widget.AbsListView.onTouchUp(AbsListView.java:3670)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.widget.AbsListView.onTouchEvent(AbsListView.java:3454)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.zhyq.movefilelib.base.ScrollOverListView.onTouchEvent(ScrollOverListView.java:321)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.View.dispatchTouchEvent(View.java:7714)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.app.Activity.dispatchTouchEvent(Activity.java:2475)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.View.dispatchPointerEvent(View.java:7894)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3995)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3874)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3435)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3485)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3454)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3561)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3462)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3618)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3435)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3485)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3454)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3462)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3435)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5580)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5560)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5531)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5660)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: at android.view.InputEventRec

04-07 10:28:49.303 8704-8704/com.zhyq.movefilelib E/UpdateVersionActivity: syntax error, expect {, actual error, pos 0





最近在改版程序时,发现先前人留下的程序是各种坑啊。。。竟然爆出来了这个BUG。。。。

看代码:

data.addAll(dataMsg);adapter.notifyDataSetChanged();    
获取到数据后,直接data添加获取到的最新数据。。。但是data还是初始化adapter时传入的。。。data数据变化时,没有更新adapter里面的data啊。。。直接通知adapter更新还有屁用啊。。。。我觉着这个是一个非常低级的错误!类似的坑还有很多!

所以在adapter里添加一个新的方法即可:

public void refreshData(List<? extends Map<String, ?>> data) {    if(data!=null)    {        mData = data;    }    notifyDataSetChanged();}
添加了refreshdata之后

if (adapter != null) {    data.addAll(dataMsg);    adapter.refreshData(data);}
这样就OK了。。。。

继续填坑之路~2016~~~加油!

0 0
原创粉丝点击