首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android DiffUtil 封装|深拷贝

谷歌也考虑到这个问题,直接让开发去做数据内容变更判断是不友善的,所以在support包中提供了DiffUtil工具给我们去做数据变更的后序开发。...Android AAC中的Paging底层也是基于DiffUtil计算的Item差异,但是我们不展开讲Paging,原因的话后面会逐步分析这个问题。...基于DiffUtil封装一下 我在文章开动之前也特地去查了一些相关文章内容,我个人看法写的都还是有点微妙的。先介绍下原理,之后我们在说一些痛点。...存粹我个人的看法哦,如果DiffUtil可以用组合的方式和当前的Adapter一起使用,这样的话是不是改造成本就是相对来说比较低的了。...notifyItemChanged 该方法直接调用DiffUtil,当数据源内容发生变更时,调用该方法,会通过接口回掉的方式通知Adapter的变更。

1.9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用优化 | RecyclerView中可优化的点

    setRecyclerViewPool(pool); recycler2.setRecyclerViewPool(pool); recycler3.setRecyclerViewPool(pool); DiffUtil...有可能你不确定你要更新的 item 是哪个了,那么只能通过 notifyDataSetChange() 进行刷新,这样会导致整个布局重绘,重新绑定所有的 ViewHolder,而且会失去可能的动画效果 DiffUtil...DiffUtili.Callback,他是用于给系统计算 diff 的callback /** *一个由DiffUtil在计算两个列表之间的差异时使用的回调类 */ public abstract...boolean areItemsTheSame(int oldItemPosition, int newItemPosition); /** * 当需要检查两个项是否具有相同的数据时,由DiffUtil...DiffUtil使用此信息检测项的内容是否已更改 * * areItemsTheSame 返回true时才会调用此方法,例如,两个 User 的id是一样的,但是他的数据可能发生了变化

    1.5K30

    使用优化 | RecyclerView中可优化的点

    setRecyclerViewPool(pool); recycler2.setRecyclerViewPool(pool); recycler3.setRecyclerViewPool(pool); DiffUtil...有可能你不确定你要更新的 item 是哪个了,那么只能通过 notifyDataSetChange() 进行刷新,这样会导致整个布局重绘,重新绑定所有的 ViewHolder,而且会失去可能的动画效果 DiffUtil...DiffUtili.Callback,他是用于给系统计算 diff 的callback /** *一个由DiffUtil在计算两个列表之间的差异时使用的回调类 */ public abstract...boolean areItemsTheSame(int oldItemPosition, int newItemPosition); /** * 当需要检查两个项是否具有相同的数据时,由DiffUtil...DiffUtil使用此信息检测项的内容是否已更改 * * areItemsTheSame 返回true时才会调用此方法,例如,两个 User 的id是一样的,但是他的数据可能发生了变化

    1.4K20
    领券