首先一些背景信息和我正在尋找的參數。什麼是定期從後臺線程更新並在多個活動中維護的ListView的好方法?
- 該應用程序有幾個需要訪問單個列表的活動。我正在使用Application類,以便在所有活動中保持此列表。
- 該列表是一個自定義對象的列表。
- 有一項活動具有ListView以顯示此列表中的項目。
- 還有其他需要能夠訪問此列表的活動,但不顯示ListView。
- 該列表可能被排序或過濾。
- 該列表可隨時從後臺線程更新(添加,刪除,更新內容),這些更改應在查看列表時立即反映出來。
到目前爲止,我的方法是通過應用程序中的方法管理列表,包括管理對列表的任何更新。如果用戶當前正在使用ListView的Activity中,它正在監聽列表的更新。當它聽到更新時,它從應用程序複製列表並將其發送到ListViews自定義ArrayAdapter。 ArrayAdapter獲取此列表副本並替換基本列表,調用當前排序並過濾它,然後替換實際顯示在列表中的列表並調用notifyDataSetChanged()
。這是爲了避免適配器在列表從UI線程關閉或沒有調用notifyDataSetChanged()
時發生任何問題。
這一切都工作得很好,問題是這種方法有同一個列表的多個副本,這會降低此列表在其他地方的可用性並創建不需要的內存使用。如果大量更新在某個時間間隔內進行,它也可以創建大量複製。
所以我期待看看是否有其他人有任何方法可以讓ListView直接引用主列表源,但仍然可以避免從UI線程更新的問題?
謝謝
適配器是保存源列表的東西還是適配器只在ListView中需要時才創建和使用? – cottonBallPaws 2011-01-24 19:29:46