1. 程式人生 > >listview呼叫notifyDataSetChanged()後不重新整理介面

listview呼叫notifyDataSetChanged()後不重新整理介面

listview的item數量有改變時呼叫notifyDataSetChanged()後不重新整理介面

解決方法:

呼叫notifyDataSetChanged()後呼叫notifyDataSetInvalidated ()

public void notifyDataSetChanged ()與notifyDataSetInvalidated()的區別:

1) notifyDataSetChanged()

notifyDataSetChanged方法通過一個外部的方法控制如果介面卡的內容改變時需要強制呼叫getView來重新整理每個Item的內容。

該方法內部實現了在每個觀察者上面呼叫onChanged事件。每當發現數據集有改變的情況,或者讀取到資料的新狀態時,就會呼叫此方法。

 2) public void notifyDataSetInvalidated ()

該方法內部實現了在每個觀察者上面呼叫onInvalidated事件。每當發現數據集監控有改變的情況,比如該資料集不再有效,就會呼叫此方法。

 notifyDataSetInvalidated(),會重繪控制元件(還原到初始狀態)

notifyDataSetChanged(),重繪當前可見區域