2011-01-31 22 views
0

上下文:Android:Gridview緩存過期項目,如何確保在頁面重新加載時爲每個顯示項目調用getview?

我有一個主要活動,持有6個選項卡,每個選項卡包含30+圖像的gridview,並且在任何時刻顯示8個圖像(每個gridview是可縮放的)。

有了這些許多圖像,我實現了一個簡單的緩存系統,即只緩存最新的25個,如果需要顯示新圖像並且不在緩存中,我將從/ data/date解碼該圖像目錄並覆蓋緩存中最舊的條目。在覆蓋最舊的條目之前,我將調用Bitmap.recycle()。

問題:

在某些時候,displying超過25張圖片後,舊的圖像將開始回收。如果我現在要回到其中一個標籤,其Image不再位於緩存中,則GetView方法將重新加載該圖片。該問題不是Gridview中的第一個項目將調用GetView,圖像的其餘部分將永遠不會調用,並且Gridview將嘗試顯示一個已經被回收的緩存圖像。

有何建議?在這種情況下強制獲取視圖還是一種聰明的方式來緩存圖像?

大加讚賞

感謝

回答

0

我通過創建擴展的Android ImageView的我自己的ImageView樣的解決了這個。然後重寫onDraw(Canvas canvas)方法並添加邏輯以在緩存不存在時重新加載緩存。

看起來哈克...但工作如想。真的希望我能做得更好,如果有人能教我的話。萬分感謝!!

相關問題