notifyDataSetChanged 后如何避免闪烁效果

Posted

技术标签:

【中文标题】notifyDataSetChanged 后如何避免闪烁效果【英文标题】:How to avoid blinking effect after notifyDataSetChanged 【发布时间】:2019-12-20 06:02:18 【问题描述】:

我已在我的应用程序中集成了 Google Ads,当我调用 notifyDataSetChnaged 时,广告会闪烁。

我尝试了以下解决方案 -

   fun RecyclerView.disableItemAnimator() 
    var animator: RecyclerView.ItemAnimator? = home_article_recyclerview.getItemAnimator();
    if (animator is SimpleItemAnimator) 
        animator.setSupportsChangeAnimations(false);
    
  

 itemAnimator?.changeDuration = 0

但是它们都不起作用。任何帮助将不胜感激。

【问题讨论】:

对于 ArrayAdapter,notifyDataSetChanged 仅在您使用 Adapter 上的 add()、insert()、remove() 和 clear() 时才有效。 查看此链接对您有帮助!!! medium.com/@hanru.yeh/… 【参考方案1】:

您应该使用 DiffUtil 来更新数据。 参考:diffUtil

【讨论】:

【参考方案2】:

您能否尝试一次解决方案: myRecyclerView.disableItemAnimator()

【讨论】:

以上是关于notifyDataSetChanged 后如何避免闪烁效果的主要内容,如果未能解决你的问题,请参考以下文章

在 notifyDataSetChanged 后 Android ListView 不刷新

调用 notifydatasetchanged 后 Recyclerview 滚动到顶部

为什么在加载模型后实例化适配器时为什么需要使用notifyDataSetChanged()?

使用数据作为 Map 的 notifyDataSetChanged 后 Android ListView 不刷新

FragmentPagerAdapter 在调用 notifyDataSetChanged 后不会从 0 开始位置

尽管我使用了 Adapter.notifyDataSetChanged(),但数据集更改后 Android ListView 不刷新