如何解决这个问题"适配器的内容发生了变化,但ListView控件没有收到通知"? [英] how to solve this issue"The content of the adapter has changed but ListView did not receive a notification"?

查看:72
本文介绍了如何解决这个问题"适配器的内容发生了变化,但ListView控件没有收到通知"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  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)

解决方案

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.

这篇关于如何解决这个问题"适配器的内容发生了变化,但ListView控件没有收到通知"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆