真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

解決多線程下載數(shù)據(jù)并更新ListView時(shí),調(diào)用notifyDataSetChanged()時(shí)的異常

異常信息如下:

創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注重慶網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計(jì),有關(guān)成都定制網(wǎng)頁(yè)設(shè)計(jì)方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及成都不銹鋼雕塑等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

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.??Make?sure?your?adapter?calls?notifyDataSetChanged()?when?its?content?changes.

該異常信息翻譯過(guò)來(lái)的中文含義是:

Adapter的數(shù)據(jù)內(nèi)容已經(jīng)改變,但是ListView卻未接收到通知。要確保不在后臺(tái)線程中修改Adapter的數(shù)據(jù)內(nèi)容,而要在UI Thread中修改。

該異常產(chǎn)生的原因是:當(dāng)ListView緩存的數(shù)據(jù)Count和ListView中Adapter.getCount()不等時(shí),并且在這個(gè)時(shí)候ListView 發(fā)生了交互事件就會(huì)拋出該異常。為避免該異常,要確保Adapter的數(shù)據(jù)內(nèi)容改變時(shí)一定要調(diào)用notifyDataSetChanged()方法。

當(dāng)使用Handler+Message或AsyncTask分批次異步下載數(shù)據(jù)信息,并在UI線程中使用adapter.notifyDataSetChanged()時(shí),經(jīng)常會(huì)產(chǎn)生這種異常。

解決辦法是:保證數(shù)據(jù)內(nèi)容改變時(shí)及時(shí)調(diào)用notifyDataSetChanged()方法。要把notifydatasetchange和listview的數(shù)據(jù)源更新放在一個(gè)線程更新.但是這樣的話,listview的數(shù)據(jù)源就不能異步了,所以就在adapter上做文章.

1. adapter的構(gòu)造方法不能把listview的數(shù)據(jù)源放進(jìn)去,而是用set數(shù)據(jù)源的方式;

解決多線程下載數(shù)據(jù)并更新ListView時(shí),調(diào)用notifyDataSetChanged()時(shí)的異常

????2. 在自定義的adapter的getcount上面不直接返回 return imgs.size(),而是返回:return null == imgs ? 0:imgs.size();

解決多線程下載數(shù)據(jù)并更新ListView時(shí),調(diào)用notifyDataSetChanged()時(shí)的異常

????3. 當(dāng)需要更新UI線程時(shí),操作如下:

解決多線程下載數(shù)據(jù)并更新ListView時(shí),調(diào)用notifyDataSetChanged()時(shí)的異常

參考:https://www.jianshu.com/p/216b12a744a3



文章題目:解決多線程下載數(shù)據(jù)并更新ListView時(shí),調(diào)用notifyDataSetChanged()時(shí)的異常
鏈接分享:http://weahome.cn/article/jcpijs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部