2016-07-28 38 views
0

我的RecyclerView中有一個WebView,每當我撥打RecyclerView.notifyDataSetChangedWebView都會有短暫的閃爍。RecyclelerView中的WebView將在notifyDataSetChanged時閃爍

我不想在WebView上發生任何變化,我該怎麼做?

我知道我可以用notifyItemXXX而不是notifyDataSetChanged來解決這個問題。但我確實需要notifyDataSetChanged方法。

+0

你能跟蹤webView索引並使用notifyItemRangeChanged嗎? –

+0

@AlokOmkar我可以保留'WebView'的蹤跡,但'notifyDataSetChanged'是刷新數據集最簡單的方法。如果我使用'notifyItemRangeChanged',我需要在我的應用邏輯上做很多工作。 –

+0

爲了防止閃爍的效果,看看這個SO答案:http://stackoverflow.com/a/32488059/2648035 - 讓我知道它是否有幫助 –

回答

0

由於 notifyDataSetChanged()官方文檔稱「佈局管理器將被迫完全重新綁定並重新佈局所有可見視圖。」。所以我認爲webview的閃存是由此造成的。你可以找到這個「依賴onnotifyDataSetChanged()作爲最後的手段」。 正如你所說,你必須使用這種方法,所以你可以請給更多的信息,所以我可以幫助你找到一個更好的解決方案。

+0

看來,如果我使用'notifyDataSetChanged','webView'必須閃爍。我需要'notifyDataSetChanged',因爲這是刷新數據集最簡單的方法。我的RecyclerView包含許多不同類型的條目,在服務器的響應之後,有些需要刪除,有些需要添加,有些需要刷新,有些則什麼也不做。真的很難使用'notifyItemXXX'。 –

+0

還有一個問題,我可以同時使用'notifyItemRangeRemoved'和'notifyItemRangeChanged'嗎? –

+1

是的,您可以同時使用'notifyItemRangeRemoved'和'notifyItemRangeChanged',但要注意範圍。正如'notifyItemRangeRemoved'所說的那樣「之前位於positionStart + itemCount之後的項目現在可以在oldPosition - itemCount中找到。」 – Beck