android砖家 2014-02-06 11:10 采纳率: 0%
浏览 7133

一点击ListView就闪退

一点击ListVIew就闪退,调试了两天了,好痛苦,望大家解救。

这是部分日志

*02-06 10:58:39.207: E/InputEventReceiver(764): Exception dispatching input event.
02-06 10:58:39.207: E/MessageQueue-JNI(764): Exception in MessageQueue callback: handleReceiveCallback
02-06 10:58:39.377: E/MessageQueue-JNI(764): 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(16908298, class android.widget.ListView) with Adapter(class android.widget.SimpleAdapter)]
02-06 10:58:39.377: E/MessageQueue-JNI(764): at android.widget.ListView.layoutChildren(ListView.java:1538)

部分代码:

  • protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_clear);
    bar = (ProgressBar) findViewById(R.id.progressBar0);
    list = new ArrayList>();
    SimpleAdapter adapter = new SimpleAdapter(this, list,
    R.layout.list_view, new String[] { "name", "size", "path"},
    new int[] { R.id.name, R.id.size, R.id.path });
    setListAdapter(adapter);
    System.out.println("hh");

    handler = new MyHandler();
    
    thread = new MyThread();
    thread.start();
    

    }

private void SendMessage(String name, String path, String size) {
Message message = handler.obtainMessage();
HashMap hashMap = new HashMap();
hashMap.put("name", name);
hashMap.put("path", path);
hashMap.put("size", size);
message.obj = hashMap;
handler.sendMessage(message);

}

class MyHandler extends Handler {

    @Override
    public void handleMessage(Message msg) {
        HashMap<String, String> hashMap = (HashMap<String, String>) msg.obj;
        list.add(hashMap);


    }

}
  • 写回答

2条回答

  • franzhong 2014-02-09 08:21
    关注

    模式错了,不能在线程内更改UI部分
    已经提示了:
    Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.
    解决方法:
    把线程内更新ui部分的内容提出来放到主线程里
    然后在子线程内仅调用它即可
    可把需要的参数传过来的

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题