如何解决这个问题"适配器的内容发生了变化,但ListView控件没有收到通知"?适配器、控件、解决这个问题、发生了

2023-09-06 15:40:47 作者:再遇太难

  11-27 13:24:08.203:ERROR / AndroidRuntime(556):未捕获的处理程序:螺纹主力退出,由于未捕获的异常
11-27 13:24:08.628:ERROR / AndroidRuntime(556):java.lang.IllegalStateException:适配器的内容发生了变化,但ListView控件没有收到通知。确保您的适配器的内容是不是从后台线程修改,但只能从UI线程。 [中的ListView(2131165233,类android.widget.ListView)与适配器(类com.bluepal.android.iConcierge.CustomAdapter)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.ListView.layoutChildren(ListView.java:1432)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.AbsListView.onLayout(AbsListView.java:1113)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.View.layout(View.java:6830)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.layoutHorizo​​ntal(LinearLayout.java:1108)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.TableRow.onLayout(TableRow.java:121)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.View.layout(View.java:6830)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.TableLayout.onLayout(TableLayout.java:437)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.View.layout(View.java:6830)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.onLayout(LinearLayout.java:918)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.View.layout(View.java:6830)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.LinearLayout.onLayout(LinearLayout.java:918)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.View.layout(View.java:6830)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.FrameLayout.onLayout(FrameLayout.java:333)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.View.layout(View.java:6830)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.widget.FrameLayout.onLayout(FrameLayout.java:333)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.View.layout(View.java:6830)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.ViewRoot.performTraversals(ViewRoot.java:996)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.os.Handler.dispatchMessage(Handler.java:99)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.os.Looper.loop(Looper.java:123)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在android.app.ActivityThread.main(ActivityThread.java:4363)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在java.lang.reflect.Method.invokeNative(本机方法)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在java.lang.reflect.Method.invoke(Method.java:521)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-27 13:24:08.628:ERROR / AndroidRuntime(556):在dalvik.system.NativeStart.main(本机方法)
 

解决方案

正如我仍无法发表评论我将把它作为一个答案,但它现在可能解决您的问题。

我有同样的问题,显示的图像在被下载在异步线程列表视图,当它发生时,点击在某个项目相同的(并通过这样打开其他活动),并立即pressing后面,从而回到到ListActivity。

停止活动,并显示列表中再次回到它的时候的时候所以我到(显然)解决这一问题作出了隐藏列表。

  @覆盖
保护无效的onStop(){
    super.onStop();
    。getListView()setVisibility(View.GONE);
}

@覆盖
保护无效onRestart(){
    super.onRestart();
    。getListView()setVisibility(View.VISIBLE);
}
 

很简单,是吧?

希望它可以帮助你。

11-27 13:24:08.203: ERROR/AndroidRuntime(556): Uncaught handler: thread main exiting due to uncaught exception
11-27 13:24:08.628: ERROR/AndroidRuntime(556): 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. [in ListView(2131165233, class android.widget.ListView) with Adapter(class com.bluepal.android.iConcierge.CustomAdapter)]
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.ListView.layoutChildren(ListView.java:1432)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.AbsListView.onLayout(AbsListView.java:1113)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.View.layout(View.java:6830)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1108)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.TableRow.onLayout(TableRow.java:121)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.View.layout(View.java:6830)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.TableLayout.onLayout(TableLayout.java:437)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.View.layout(View.java:6830)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.View.layout(View.java:6830)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.View.layout(View.java:6830)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.View.layout(View.java:6830)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.View.layout(View.java:6830)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.ViewRoot.performTraversals(ViewRoot.java:996)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.os.Looper.loop(Looper.java:123)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at android.app.ActivityThread.main(ActivityThread.java:4363)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at java.lang.reflect.Method.invokeNative(Native Method)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at java.lang.reflect.Method.invoke(Method.java:521)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-27 13:24:08.628: ERROR/AndroidRuntime(556):     at dalvik.system.NativeStart.main(Native Method)
win10以太网和wlan都消失了,更改适配器选项中是空的,怎么解决

解决方案

As I can't still comment I'll put it as an answer, though it might now solve your problem.

I had the same issue when showing images in a listview that were downloaded in an asynchronous thread and it happened the same when clicking in an item (and by so opening other activity) and immediately pressing the back, thus returning to the ListActivity.

So what I made to (apparently) solve the issue was to hide the list when stopping the activity and showing the list again when going back to it.

@Override
protected void onStop() {
    super.onStop();
    getListView().setVisibility(View.GONE);
}

@Override
protected void onRestart() {
    super.onRestart();
    getListView().setVisibility(View.VISIBLE);
}

Quite simple, huh?

Hope it helps you.