3

我試圖更新一個progressBar,它是RecyclerView項目之一的一部分。我知道我能做到這一點有兩種方式,更新RecyclerView項目ProgressBar,但不調用適配器上的notifyItemChanged(int)

方法1:通過調用notifyItemChanged(位置)

方法2刷新項目行:通過訪問使用方法findViewByPosition()LayoutMananger對象的視圖。

但不幸的是他們都沒有在我的情況下工作。

如果我使用的第一個,整個項目將得到重新粉刷,該recyclerview的背景顏色是灰色的,該項目是白色的,所以用戶可以看到整個的項目刷新。

如果我嘗試第二個,我將在滾動時遇到問題。

我想更新進度就像WhatsApp的一樣。在此先感謝

+0

我有同樣的問題。我試圖存儲ViewHolder並更新進度更新,但它不起作用。 – Vusal

+0

@Vusal,看我的回答如下,它會解決這個問題你面對的問題。 – Sakiboy

回答

8

如果我使用第一個,整個項目將重新繪製,recyclerview的背景顏色是灰色和項目是白色的,因此用戶可以注意到整個項目刷新。

我也遇到了這個問題。要解決它,你需要關閉默認的項目更改動畫。一旦你關閉該項目改變動畫您recyclerView項目將更新沒有任何閃爍/跳躍,讓您在使用notifyItemChanged(int)沒有任何問題。

關閉默認項變化的動畫,像這樣:

((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); 
+1

令人敬畏的兄弟。創造了我的一天。非常感謝。 –

+1

@Sakiboy礦以及:) – Nisarg

相關問題