2015-04-30 45 views
0

我正在使用ArrayAdapter以及ListView來顯示一些圖像(我使用Picasso來幫助進行圖像處理)。圖像最初從本地設備上的狀態加載。適配器對圖像具有ids,其中適配器的getView()方法用於獲取路徑。如果圖像在本地不可用,則本地狀態將返回圖像的URL。如果URL已經過期,我需要從後端獲取。當後端數據發生變化時刷新ArrayAdapter,但項目值不是

如果URL沒有過期,我沒有問題,因爲我可以直接提供畢加索或URL的路徑,畢加索將爲我處理所有事情。但是,當我需要從後端獲取URL時,我需要異步執行此操作。獲取URL後,我試着做以下,但它似乎沒有工作(在這種情況下使用畢加索與URL我getView()意志):

 adapter.remove(id); 
     adapter.add(id); 

notifyDataSetChanged()似乎並沒有做太多爲好。

處理這種情況的最佳方法是什麼?除了我想用適配器做什麼以外,還有別的方法嗎?我希望儘可能延遲從後端獲取URL,直到用戶需要查看圖像爲止。

更新:現在,我將id替換爲temp_id,當URL過期時,然後再次添加正確的id,此時我具有有效的URL以便視圖得到刷新。

回答

0

你有沒有嘗試用myArray.clear()清理圖像URL的ArrayList?不太確定如果我得到您的問題或您的代碼如何。

但我有這樣的問題。對我有用的是完全重新安裝適配器。

link應該幫助。

+0

我擔心保持一個指向數據的指針,因爲基類可能會在某個時刻複製Arraylist(儘管此時代碼不會執行此操作)。如果我試圖保留自己的副本,我將不得不重寫所有添加/刪除方法,以確保我的副本同步(想要嘗試並避免這種混亂)。將嘗試clear()方法,但是IIRC,我確實嘗試了這一點,但它沒有奏效。 – wislo

相關問題