做電商,難免會遇到訂單列表的展示,類似淘寶那樣,有的一個訂單中是一個商品,有的一個訂單是兩個商品,就是說每個訂單中商品數(shù)量都是不固定的,當時一看到這個的想法就是使用ListView的getViewTypeCount以及getItemViewType方法來實現(xiàn),剛開始測試的時候都沒有問題,隨著時間的推遲,總會出現(xiàn)訂單列表崩潰的現(xiàn)象,然后通過自己測試排查,發(fā)現(xiàn)總是在上拉加載更多的時候,繼續(xù)滾動,運氣好就不會崩,運氣不好就崩了,結合自己的經(jīng)驗,感覺問題應該是出在getViewTypeCount上。 通過Android官網(wǎng)查看這個方法的解釋,才恍然,有這樣的一句話,This method will only be called when when the adapter is set on the the AdapterView.

20160305094024845.jpg
當adapter被創(chuàng)建的時候才會調用getViewTypeCount方法。 總結:如果ListView的數(shù)據(jù)有變化,通過notifyDataSetChanged()方法是無法再次調用getViewTypeCount方法的。