[问题]使用AsyncTask更新List资料的问题

楼主: HelloJimmy (Angel Michael)   2014-05-24 18:56:22
大家好,
我使用AsyncTask异步的去服务器取得一个ArrayList
让adapter吃进ArrayList并动态更新ListView里Item的资料.
点击Item时会取得Item Position并再去后台取得详细资讯,
之后用一个Activity呈现这个资讯.
但现在在点击Item时三不五时就会出现下列Exception:
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.
Google之后我有修正更新通知:
private class getDispatchedTask extends AsyncTask<String, Integer, String>{
...
protected void onPostExecute(String result) {
...
adapter.notifyDataSetChanged();
}
}
但问题还是会发生
请教高手协助
谢谢~
楼主: HelloJimmy (Angel Michael)   2014-05-24 18:58:00
附注:ArrayList在doInBackground()中更新
作者: tails32100 (Tails)   2014-05-24 19:43:00
印象中,doInBackground()不能做UI操作..
作者: jerrysky (jerry~sky)   2014-05-24 20:15:00
adapter更新资料后要用notifydatasetchanged更新内容要在onpostexecuted做
作者: givemepass (λ)   2014-05-24 21:37:00
你的数据更新是放在哪边?
作者: tails32100 (Tails)   2014-05-24 23:12:00
如果是要在执行阶段的话要用onProgressUpdate()
作者: slemonade (淳)   2014-05-24 23:31:00
程式码能完整点吗?
作者: mshockwave (夏克维夫)   2014-05-25 09:35:00
二楼正解 Async存在就是避免UIthread和主thread混用
作者: sdyy (中坜市的小智)   2014-05-25 10:45:00
要在doinbackground作UI更新 请使用publishProgress

Links booklink

Contact Us: admin [ a t ] ucptt.com