在RecyclerView.Adapter和RecyclerView.ItemAnimator之间传递信息

时间:2017-10-10 15:14:39

标签: android android-recyclerview

假设我们有一个带日期字段的适配器。当日期更改时,适配器将重新计算要显示的项目,而ItemAnimator将重新计算要执行的动画类型,即从新日期在当前日期之前或之后,从左到右或从右到左。 我们如何将这些信息传递给ItemAnimator到适配器?

考虑一下:

  • ItemAnimator无法直接访问适配器。
  • ItemAnimator recordPreLayoutInformation接受RecyclerView.State但State不是在RecyclerView之外的accessibile(在RecyclerView中没有getState())及其回调,没有一个适用于Adapter,只能用于ItemDecoration和ItemAnimator。 / LI>
  • recordPreLayoutInformation中的payloads参数仅通过Adapter.notifyItemChanged()notifyItemInserted()通过notifyItemRemoved()收集。

弃用选项:

  • Subclass RecyclerView实现getState()参数并在Adapter.onAttachedToRecyclerView()中获取对它的引用。
  • 将适配器作为参数传递给ItemAnimator。
  • 在Adapter和ItemAnimator之间添加共享对象。
  • 适配器和ItemAnimator中的重复日期状态。

TL; DR:我错过了在Adapter和ItemAnimator之间传递信息的正确方法吗?

0 个答案:

没有答案