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

明白了。我现在对片段现在知道它的一种活动方法感到困扰,但是由于官方网站也建议这样做,那么它应该是一条路。 –

相关问题