AsyncTask:未从后台线程修改

时间:2012-06-28 15:05:03

标签: android multithreading android-asynctask adapter

AsyncTask:我在后台线程中删除了所有可能的ui操作,在运行5或6次后仍然遇到了那种异常。请帮帮我。

  

java.lang.IllegalStateException:适配器的内容有   已更改,但ListView未收到通知。确保   您的适配器的内容不会从后台线程修改,但是   仅来自UI线程。 [在ListView(2131427449,类   android.widget.ListView)with Adapter ...

2 个答案:

答案 0 :(得分:1)

尝试从notifyDataChanged()主题中致电requestLayout();UI

答案 1 :(得分:0)

好的,它有效。我在发布进度时使用了一个处理程序来添加项目(即AsyncTask + Handler):

private void addAdapter(Item item)
{
    Message message = addhandler.obtainMessage();
    message.what = 1;
    message.obj = item;
    addhandler.sendMessage(message);
}

private Handler addhandler = new Handler() {
    public void handleMessage(Message msg)
    {
        switch (msg.what) {
        case 1:
            if (msg.obj != null) {
                _adapter.add((Item) msg.obj);
            }
            break;
        default:
            break;
        }
    }
};