0

我查閱了RecyclerView.Adapter的文檔,以瞭解notify...方法的工作方式。它表示在ViewPager中發生這些更改時,通知RecylerView關於數據集更改的最佳方式是什麼?

如果您正在編寫適配器,如果可以的話,使用更具體的更改事件將始終更高效。作爲最後的手段依賴notifyDataSetChanged()。

點擊的項目我RecyclerView開始包含ViewPager的活動。 ViewPager使用FragmentStatePagerAdapter。因此,如果我願意的話,我可以輕掃一下視圖並對其進行更改。當我的尋呼機託管活動結束後,我必須通知RecyclerView的適配器有關更改。我只能看到2點可能的方式來進行:

  1. 我可以建立這樣的通信通道:尋呼機的片段通知主辦的活動,如果他們編輯 - >主辦活動發送的所有更改的列表在父活動完成時向父活動發送 - >父活動在RecylerView.Adapter上調用notifyItemChanged()進行所有更改。我想不出一種不難看的方式。
  2. 我說這是最後一招,直接調用'notifyDataSetChanged()`,問題沒有了,但沒有證據證明它不會減慢應用程序的速度。

我對此很新,所以也許我錯過了一個明顯的解決方案。

回答

1

我認爲這兩種方法都可以根據情況加以應用。要作出正確的決定,您應該考慮可能會更改的項目數量以及列表中的項目總數。

沒有那麼多總項目或許多更改 - 使用notifyDataSetChanged

很多列表項目或單個更改 - 使用第一種方法。

方法#1可以通過調用startActivityForResult並期望早在onActivityResult更改項目ID列表可以輕鬆實現。

別忘了 - 你可以隨時測量和比較兩種方法的性能。

+0

感謝您的回答。對於通信信道的一部分,'startActivityForResult()似乎是合乎邏輯的。第二部分你會用什麼?片段頁面需要將數據發送到其託管活動的方式。 –

+1

@LimboExile這裏是如何將數據從片段傳遞到活動 https://developer.android.com/training/basics/fragments/communicating.html –

+0

明白了。我現在對片段現在知道它的一種活動方法感到困擾,但是由於官方網站也建議這樣做,那麼它應該是一條路。 –

相關問題