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 不刷新