首页 > 代码库 > Android - Bug:The content of the adapter has changed but ListView did not receive a notification.

Android - Bug:The content of the adapter has changed but ListView did not receive a notification.

Bug:The content of the adapter has changed but ListView did not receive a notification.


本文地址:http://blog.csdn.net/caroline_wendy


错误日志:
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(2131494123, class me.chunyu.ChunyuDoctor.Widget.RefreshableListView) with Adapter(class android.widget.HeaderViewListAdapter)]
     at android.widget.ListView.layoutChildren(ListView.java:1566)
     at android.widget.AbsListView.onTouchModeChanged(AbsListView.java:3580)
     at android.view.ViewTreeObserver.dispatchOnTouchModeChanged(ViewTreeObserver.java:879)
     at android.view.ViewRootImpl.ensureTouchModeLocally(ViewRootImpl.java:3543)
     at android.view.ViewRootImpl.access$400(ViewRootImpl.java:111)
     at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3274)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:135)
     at android.app.ActivityThread.main(ActivityThread.java:5505)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:948)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:743)

解决方案:
替换:RefreshableListFragment -> RemoteDataList2Fragment
包括:
DocListByExpertiseActivity、AddRegDocHomeActivity、FamilyDocMsgListActivity、
ThankDoctorActivity、AddRegListActivity、FamilyDocHomeActivity、FragmentWraperActivity2;

位置:
刷新条滚动停止时,才会更新ListView的数据,进行同步。
                    @Override
                    public void onScrollStateChanged(AbsListView absListView, int i) {
                        mScrollStatus = i;
                        if (mScrollStatus == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
                            getListView().setOnScrollListener(getDefaultScrollListener());
                            mHandler.post(new Runnable() {
                                @Override
                                public void run() {
                                    refreshListView(mLoadingMore, (List<?>)data.getData());
                                }
                            });
                        }
                    }


即可。



Android - Bug:The content of the adapter has changed but ListView did not receive a notification.