2

我在一家RecyclerView顯示可變數目ViewHolders,每個與它獨特的CountDownTimer,在TextView中顯示。錯誤與RecyclerView ViewHolders許多CountDownTimers

如果我沒有大量的RecyclerView ViewHolders的那麼CountDownTimers剔下來預期,逐秒。

但是,當我在RecyclerView中有大量項目(> 10個左右)時,出現了我的問題。當我用RecyclerView打開Activity時,我看到CountDownTimers對我顯示正常,但是當我滾動整個RecyclerView時,CountDownTimers開始出現故障。

由於故障我的意思是它們波動。例如,一個CountDownTimer將顯示20:15然後跳到30:16然後回到20:14然後回到30:15。這很奇怪。

這是我相信的問題是:當我向下滾動RecyclerView時,帶有CountDownTimers的ViewHolders消失,但它們的CountDownTimers不會被銷燬,當我滾動回到那些ViewHolders時,有多個CountDownTimers被分配給顯示的TextViews他們各自的倒計時。

我的問題是這樣的:假設我描述確實是問題,我怎麼取消CountDownTimers在RecyclerView ViewHolders,因爲它們可以滾動過去?

+0

看看這個答案,可能會幫助你http://stackoverflow.com/a/31060029/6414107 – SaravInfern

回答

1

從我約RecyclerView理解:

RecyclerView創建viewHolders儘可能多的,因爲它需要顯示加一或平滑滾動更多的額外費用。當它需要顯示新的項目時,它會檢查是否存在任何未使用的viewHolder。如果存在,則重用現有的創建新的。

在您的情況下,當您滾動很長時間後,它會嘗試使用現有的viewHolder,它可能會開始倒計時。現在,當新項目綁定它開始另一個倒計時。這就是爲什麼它顯示故障。

所以,你可以開始倒計時下來之前增加一個檢查&停止計數。希望它能幫助你。

在此先感謝。