java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。

时间:2013-05-02 08:08:09

标签: android

@Override
protected void onPostExecute(Pair < Boolean, Integer > result) {
    Log.d("XXX", "Result : " + result.second);
    if (isCancelled())
        return;

    if (result.second > 0)
        nextPage();
    notifyDataSetChanged();

    if (result.first)
        notifyMayHaveMorePages();
    else
        notifyNoMorePages();

};

我收到以下异常......

  

05-02 12:34:16.423:E / AndroidRuntime(12814):致命异常:主要   05-02 12:34:16.423:E / AndroidRuntime(12814):   java.lang.IllegalStateException:适配器的内容有   已更改,但ListView未收到通知。确保   您的适配器的内容不会从后台线程修改,但是   仅来自UI线程。 [在ListView(2131034225,类   com.greenway.primemobile.common.SectionedListView)with Adapter(class   android.widget.HeaderViewListAdapter)] 05-02 12:34:16.423:   E / AndroidRuntime(12814):at   android.widget.ListView.layoutChildren(ListView.java:1544)05-02   12:34:16.423:E / AndroidRuntime(12814):at   android.widget.AbsListView $ FlingRunnable.run(AbsListView.java:4042)   05-02 12:34:16.423:E / AndroidRuntime(12814):at   android.view.Choreographer $ CallbackRecord.run(Choreographer.java:749)   05-02 12:34:16.423:E / AndroidRuntime(12814):at   android.view.Choreographer.doCallbacks(Choreographer.java:562)05-02   12:34:16.423:E / AndroidRuntime(12814):at   android.view.Choreographer.doFrame(Choreographer.java:531)05-02   12:34:16.423:E / AndroidRuntime(12814):at   android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:735)   05-02 12:34:16.423:E / AndroidRuntime(12814):at   android.os.Handler.handleCallback(Handler.java:725)05-02   12:34:16.423:E / AndroidRuntime(12814):at   android.os.Handler.dispatchMessage(Handler.java:92)05-02   12:34:16.423:E / AndroidRuntime(12814):at   android.os.Looper.loop(Looper.java:137)05-02 12:34:16.423:   E / AndroidRuntime(12814):at   android.app.ActivityThread.main(ActivityThread.java:5041)05-02   12:34:16.423:E / AndroidRuntime(12814):at   java.lang.reflect.Method.invokeNative(Native Method)05-02   12:34:16.423:E / AndroidRuntime(12814):at   java.lang.reflect.Method.invoke(Method.java:511)05-02 12:34:16.423:   E / AndroidRuntime(12814):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)   05-02 12:34:16.423:E / AndroidRuntime(12814):at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)05-02   12:34:16.423:E / AndroidRuntime(12814):at   dalvik.system.NativeStart.main(原生方法)

3 个答案:

答案 0 :(得分:2)

如果更改适配器中的任何内容,则需要为适配器调用notifyDatasetChanged()

答案 1 :(得分:2)

我知道这是一个迟到的回复....但我最近刚收到这个错误....我正在使用android-amazing-listview。我得到的结果与

相同
(class android.widget.HeaderViewListAdapter)]).

对我有用的解决方案是&gt;

我认为这个问题源于getAdapter返回AmazingAdapter而不是包裹的HeaderListViewAdapter导致计数有时不同的事实。我只是从AmazingListView中删除了getAdapter方法,并且从那以后就没有得到异常。

答案 2 :(得分:0)

您需要更新runonui线程内的UI,如下所示

runOnUiThread(new Runnable() {

public void run() 
{
    //Update UI here                        
}
});