2014-03-14 12 views
0

我有一個下載列表,它將通過下載線程回調進行更新,在某些情況下,列表將由NotifyDatasetChanged()更新,所以衝突將會發生,因爲它們都需要調用getview()方法。如何在線程和主線程更新lisitem時處理衝突

下載線程--->回撥---> getview()用於指定項目視圖--->更新viewholder

主線--->刷新數據---> NotifyDatasetChanged() - - > call getview()---> update viewholder

如何處理這些情況?

在此先感謝。

回答

0

一般來說,你不想從2個不同的線程操縱你的數據。至少,並非沒有保護。另外,您無法修改非UI線程的視圖。更新視圖的後備數據(不是視圖本身,只是視圖所代表的項目),並調用notifyDatasetChanged()。該列表將與當時的適配器一起使用以重新呈現視圖,並且此時適配器可以相應地更新視圖。

+0

Thanks guys.Do you mean更新數據源而不是視圖本身?但是,我不確定每500ms調用NotifyDatasetChange()是否有問題? – Simon

+0

是的,只是更新後臺數據而不是視圖本身。即使那樣,你也要確保你保護對數據的訪問。每500毫秒更新一次數據會非常積極。 –

+0

謝謝拉里。我想我需要改變原來的設計。 – Simon