編輯:高級開發
1.改變適配器Adapter內容時不要在後台線程中,必須在UI線程中處理,這點可以通過Handler傳出來解決。
2.嘗試Adapter的notifyDataSetChanged()方法,當然主要看你代碼的具體情況。
以上只貌似只是把錯誤信息翻譯過來而已,真正的原因請看源代碼:
mItemCount = mAdapter == null ? 0 : mAdapter.getCount();
..... //中間是其他代碼就不拷貝了
else if (mItemCount != mAdapter.getCount()) {//這裡可以看出為什麼會拋出adapter has changed,是因為你可能還有線程在跑,更新了mAdapter.getCount();的返回值
throw new 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(" + getId() + ", " + getClass()
+ ") with Adapter(" + mAdapter.getClass() + ")]");
============
ps:知其然,知其所以然。剛開始我發現寫不寫notifyDataSetChanged()都能實現效果,於是我就把它注釋了,直到出了問題,我看了以上內容,我就明白為什麼會有adapter has changed的提示,也明白了notifyDataSetChanged()的含義。
我的理解是:增加了內容長度改變了 但是沒有通知更新 當選中增加的那個內容時 就造成了 數組越界(或者別的問題)
所以添加內容後要更新。
下面文章進行對android開發環境的初步分析和討論,android 是Google開發的基於Linux平台的開源手機操作系統,而且他的開發語言基本是使用Java語言編
Launcher不是android特有的,更不是智能手機特有的。很多設備都具有類似Launcher這種東西。就算是Windows,Linux也是有的。android中的
android系統為研發數據庫的技術人員對Team System承諾,提供相關工具,這樣可以為整個軟件開發周期少了不少彎路,降低工作的復雜性,尤其是智能手機,安裝及使用
android程序作為谷歌企業戰略的重要組成部分,最上層是各種應用軟件,包括通話程序,短信程序等,應用軟件則由各公司自行開發,以Java編寫,並且添加junit.jar