RecyclerView的notifyDataSetChanged

  相信RecycleView很多人都不陌生,每次拿到数据后,都会调用Adapter的notifyDataSetChanged实现UI更新,但事实上notifyDataSetChanged使用的时候也是存在些问题的,就像小哥遇到的一个问题:利用notifyDataSetChanged(position)实现局部更新数据,但是就好像出现了UI更新延时的问题,查了一些文档,https://blog.csdn.net/lyankj/article/details/53738398,发现这位小哥也遇到这样的问题,也给出了解决方法,利用notifyDataSetChanged(position,payload),将payload参数设置为0传入就可以避免UI更新出现延时。

  但问题来了,这是为什么?payload起到了什么作用?https://www.jianshu.com/p/de8601f357a9这位小哥讲得就很不错,当我们调用notifyDataSetChanged(position)的时候,其实adapter会去调用onCreateViewHolder和onBindViewHolder的,而调用notifyDataSetChanged(position,payload)的时候,adapter只会调用onBindViewHolder的,因此我们看到,后者避免了视图的重新创建,提高渲染效率,同时还可以通过判断onBindViewHolder传过来的payLoad,来单独更新某些UI,真正实现局部刷新。看来后面还是要多花时间看看RecyclerView呀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值