【问题标题】:Avoid vViewGroup flickering in listView避免 vViewGroup 在 listView 中闪烁
【发布时间】:2016-08-25 01:14:46
【问题描述】:

我在 Android 中实现了一个适配器,用于将 Admob 原生广告添加到 LivtView 对象中。这是一个简单的解决方案,它工作正常,但滚动列表视图时原生广告闪烁。当我的手指从屏幕上抬起时,实际上会发生闪烁 - 而列表正在滚动,原生广告滚动时没有闪烁。

我这样做的方法是在同一个适配器中插入常规列表视图项和原生广告 - 我跟踪插入原生广告的位置并在后台加载原生广告 - 在加载广告之前,我在适配器中插入一个虚拟视图;在加载每个广告时,我将虚拟视图替换为原生广告。在 getView 上,我检查要绘制的项目是否是原生广告,如果是,我会膨胀一个虚拟 LinearLayout 视图并执行以下操作以向其中添加原生广告(如果已加载):

((ViewHolder) holder).layout.removeAllViews();
((ViewHolder) holder).layout.addView(view);

有没有简单的解决方法?我在使用 RecyclerView 时看到过类似情况的解决方案,但我还没有找到解决方案。

【问题讨论】:

  • 我建议原生 admob 不是明智的选择,对于 feed 广告使用 NativeExpress Ads,您还需要切换到 RecyclerView 以更好地控制您的可回收内容。

标签: android listview


【解决方案1】:

经过一些调试,我发现每次调用 getView 函数时都会将原生广告插入到 ListView 中(即使它是可见的)。问题是我的 getView 代码中的一个错误 - 每次都调用填充项目的代码,即使传递给函数的视图不为空。解决这个问题就解决了!

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    相关资源
    最近更新 更多